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, който отговаря.
Ясно... Много благодаря... Въобще не се бях досетил, че може да има приоритет... След седмица сигурно щяхНо до RegEx нямаше да стигна... Сега вече си работи идеално
Поздрави!