Професионална програма
Loading...
d_rumenov avatar d_rumenov 34 Точки

Symfony Blog проект

Здравейте,

Забелязах, че има съседна тема относно Symfony, но прецених да не спамя колегата и затова създавам нов въпрос. Ако е неправилен подход се извинявам...

Въпросът ми е за това парче лазаня:

https://pastebin.com/KN6fJecK

Независимо как го формулирам, в момента в който създам допълнителен бутон в "base.html.twig", който да сочи към "article/allarticles.html.twig" чрез командата "{{ path("123")}}, ми гърми с грешка в "article\article.html.twig". Ако изтрия article.html.twig или ако преместя allarticles.html.twig в друга папка, бутонът отваря посочения файл (но във втория случай не мога да extend-на нищо и командите от Symfony не съществуват)... Та ми е много любопитно каква кретения съм извършил, та това не иска да сработи?! Symfony-то, за огромно разочарование, защото изглежда забавно за ползване, се оказа доста над възможностите ми и въобще не мога да му стопля логиката откъде какво и защо тегли и поради тази причина предполагам, че грешката е очевидна, но уви, убягва ми вече n-ти ден...

Благодаря за оказаното съдействие!smiley

Поздрави!

П.С. Грешката, с която гърми е "Impossible to access an attribute ("title") on a null variable in article\article.html.twig at line 9" -> това най-вероятно означава просто, че не съм му подал информация за рендиране, но на мен ми е интересно защо въобще се опитва да отвори този път, а не зададения, който е празен и просто би следвало да отвори пуст HTML...?!

Тагове:
1
Fundamentals Module
Bullsized avatar Bullsized 153 Точки

по принцип не би трябвало да имаш линк към "article/allarticles.html.twig" в base.html.twig, а само 5 неща, разделени 3:2 с иф, 1.1 - води към създаване на статия, 1.2 води към профил на потребителя, 1.3 води към излизане и 2.1 води към регистриране и 2.2 води към логване. всички статии би трябвало да ти се показват директно на главната страница. като цяло този блог е мега калташка история и объркаш ли на един ред всичко отива по дяволите... ако искаш изтегли си рар файла от моя гит и просто сравнявай с това, в което се съмняваш (моя успях да го подкарам след 2 дена мъки и 5 пъти почвания наново директно и всички възможни ексепшъни)

0
d_rumenov avatar d_rumenov 34 Точки

Здравейте!

Благодаря за предложението и разясненията... Той блога някак тръгна по условие (демек като преписах всичко по класическата система)... Но после реших да се опитам да разбера какво всъщност съм направил и да добавя един допълнителен бутон с някаква измислена функционалност, за мен си, ей така, да видя какво мога да направя... Та това ми е проблемът всъщност... Просто исках да добавя едно бутонче дето да прави нещо различно от условието... И се зачудих защо не мога дори да отворя празен html.twig файл при положение че, уж, правя същите стъпки като за другите бутони и функционалност....

Поздрави!

1
RoYaL avatar RoYaL Trainer 6845 Точки

Ще качиш ли целия проект някъде, за да видим :)

1
d_rumenov avatar d_rumenov 34 Точки

Разбира се, благодаря за отделеното време... Само да попитам какво имаш предвид под целия проект - Контролера за статиите, където всъщност се опитвам да добавя функционалност, или кода от всички файлове?

Това е контролера за статиите - https://pastebin.com/grk4hjKp

Това е основният изглед - https://pastebin.com/uG6uQ6n1

В него се вижда, че съм добавил едниствено бутон ТЕСТ с {{ path("123") }}, който уж трябва да сочи към article/allarticles.html.twig...

Нещо елементарно бъркам, но не мога да го видяfrown

Поздрави!

1
27/07/2017 13:13:22
RoYaL avatar RoYaL Trainer 6845 Точки

Всичко без var и vendor папките. Качи го в github :)

0
Bullsized avatar Bullsized 153 Точки

принципно в PHPStorm като напишеш примерно "example.html.twig" програмата усеща, че го няма и с алт + ентър можеш да си създадеш директно файла и да почнеш да пишеш в него, добавяш схемите с {% %} и вътре попълваш в боди-то какво да има, но как става номера с {{ }} и на мен не ми стана много ясно... другото - пиши във фейсбук групата (има я в началото на курса на Ресурси) - като цяло там отговарят повече на главоблъсканици и лекторите Иван и Влади са редовни :)

 

едит: баси, оставих си браузъра отворен сутринта и сега по обяд директно отговарям и виждам, че сте се разписали :) 

0
27/07/2017 14:44:36
d_rumenov avatar d_rumenov 34 Точки

То точно това е интересното, че като го създам не иска да го достъпи и не мога да разбера защо... Достъпва го само ако е в друга папка, но товава {% някаква команда %} не иска да работи. Ако изтрия файла, който дава грешка, също тръгва посочения файл, но тогава не ми е ясно защо гърми файла, който по принцип работи правилно и защо въобще се опитва да пусне на този бутон файл, който не е зададен за този бутонlaugh

П.С. Сега като се открие, че грешката е очеизвадна ще стана за смях, но аз просто не мога да я видя... Чудя се дали не е нещо грешна анотоция, но и там ровичках и нищо...frown

0
RoYaL avatar RoYaL Trainer 6845 Точки

Грешката не е очеизвадна, доста добре прикрита е. Трябваше да запаля приложението при мен и да я видя с очите си, за да се сетя какво е.

Имаш два Route-a:

    1. /article/{id} -> където {id} е нещо произволно, например "4" или "pesho"

    2. /article/allarticles

Когато дойде URL, който изглежда във формата /article/нещо_си веднага се опитва това нещо_си да го сложи на {id}, дори и да има exact match на друг Route.

В случая приема allarticles за {id} на Route-a от т.1. и изпълнява метода viewArticle($id) с изпратено $id="allarticles", без да продължи надолу и да види, че има друг дефиниран Route, който отговаря точно на низа в URL-a.

Наивното решение е да преместиш метода test() над viewArticle($id). Така ще смениш приоритета му и ще тества първо него, преди другия. Маршрутизирането работи така, че намира първият Route, който отговаря на шаблона.

По-правилното решение е да кажеш, че ID-тата на viewArticle($id) маршрута трябва да отговарят на шаблон (regex pattern) за цифри. Така всичко, което не е цифра, няма да отговори на този шаблон и тестването ще продължи надолу, докато открие друг Route, който отговаря.

    @Route("/article/{id}", requirements={"id": "\d+"}, name="article_view")

 

 

 

0
d_rumenov avatar d_rumenov 34 Точки

Ясно... Много благодаря... Въобще не се бях досетил, че може да има приоритет... След седмица сигурно щяхlaughНо до RegEx нямаше да стигна... Сега вече си работи идеалноyes

Поздрави!

0