Symfony Blog проект
Здравейте,
Забелязах, че има съседна тема относно Symfony, но прецених да не спамя колегата и затова създавам нов въпрос. Ако е неправилен подход се извинявам...
Въпросът ми е за това парче лазаня:
Независимо как го формулирам, в момента в който създам допълнителен бутон в "base.html.twig", който да сочи към "article/allarticles.html.twig" чрез командата "{{ path("123")}}, ми гърми с грешка в "article\article.html.twig". Ако изтрия article.html.twig или ако преместя allarticles.html.twig в друга папка, бутонът отваря посочения файл (но във втория случай не мога да extend-на нищо и командите от Symfony не съществуват)... Та ми е много любопитно каква кретения съм извършил, та това не иска да сработи?! Symfony-то, за огромно разочарование, защото изглежда забавно за ползване, се оказа доста над възможностите ми и въобще не мога да му стопля логиката откъде какво и защо тегли и поради тази причина предполагам, че грешката е очевидна, но уви, убягва ми вече n-ти ден...
Благодаря за оказаното съдействие!
Поздрави!
П.С. Грешката, с която гърми е "Impossible to access an attribute ("title") on a null variable in article\article.html.twig at line 9" -> това най-вероятно означава просто, че не съм му подал информация за рендиране, но на мен ми е интересно защо въобще се опитва да отвори този път, а не зададения, който е празен и просто би следвало да отвори пуст HTML...?!
Здравейте!
Благодаря за предложението и разясненията... Той блога някак тръгна по условие (демек като преписах всичко по класическата система)... Но после реших да се опитам да разбера какво всъщност съм направил и да добавя един допълнителен бутон с някаква измислена функционалност, за мен си, ей така, да видя какво мога да направя... Та това ми е проблемът всъщност... Просто исках да добавя едно бутонче дето да прави нещо различно от условието... И се зачудих защо не мога дори да отворя празен html.twig файл при положение че, уж, правя същите стъпки като за другите бутони и функционалност....
Поздрави!
Ще качиш ли целия проект някъде, за да видим :)
Разбира се, благодаря за отделеното време... Само да попитам какво имаш предвид под целия проект - Контролера за статиите, където всъщност се опитвам да добавя функционалност, или кода от всички файлове?
Това е контролера за статиите - https://pastebin.com/grk4hjKp
Това е основният изглед - https://pastebin.com/uG6uQ6n1
В него се вижда, че съм добавил едниствено бутон ТЕСТ с {{ path("123") }}, който уж трябва да сочи към article/allarticles.html.twig...
Нещо елементарно бъркам, но не мога да го видя
Поздрави!
Всичко без var и vendor папките. Качи го в github :)
Мисля, че всичко е тук:
https://github.com/drumenov/Blog_With_Symfony
принципно в PHPStorm като напишеш примерно "example.html.twig" програмата усеща, че го няма и с алт + ентър можеш да си създадеш директно файла и да почнеш да пишеш в него, добавяш схемите с {% %} и вътре попълваш в боди-то какво да има, но как става номера с {{ }} и на мен не ми стана много ясно... другото - пиши във фейсбук групата (има я в началото на курса на Ресурси) - като цяло там отговарят повече на главоблъсканици и лекторите Иван и Влади са редовни :)
едит: баси, оставих си браузъра отворен сутринта и сега по обяд директно отговарям и виждам, че сте се разписали :)
То точно това е интересното, че като го създам не иска да го достъпи и не мога да разбера защо... Достъпва го само ако е в друга папка, но товава {% някаква команда %} не иска да работи. Ако изтрия файла, който дава грешка, също тръгва посочения файл, но тогава не ми е ясно защо гърми файла, който по принцип работи правилно и защо въобще се опитва да пусне на този бутон файл, който не е зададен за този бутон
П.С. Сега като се открие, че грешката е очеизвадна ще стана за смях, но аз просто не мога да я видя... Чудя се дали не е нещо грешна анотоция, но и там ровичках и нищо...
Грешката не е очеизвадна, доста добре прикрита е. Трябваше да запаля приложението при мен и да я видя с очите си, за да се сетя какво е.
Имаш два 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")Ясно... Много благодаря... Въобще не се бях досетил, че може да има приоритет... След седмица сигурно щях
Но до RegEx нямаше да стигна... Сега вече си работи идеално
Поздрави!