Проблем с добавянето на статии към HeidiSQL от Blog - PHP and Symfony
Моля, за помощ за завършването на този проект. Ето докъде съм стигнал:
- Успешно регистрирам потребители и те се записват в базата данни в HeidiSQL.
- Проблем с тази задача се появи на стъпка IV.9. - Implementing Article Create Function, зс това, че не се генерира “createView“ (както каза Калин – създадох си го сам). Но точно в тази точка от проекта хем се казва „we need to create a new function. We will name it “createAction”“, хем после създадената функция носи името „create“, вместо “createAction”???
- Когато тествах кода си на тази стъка, все пак се появи линк за създаване на статия, но като зададох име и съдържание на статията, те не се запомняха и не се появиха в базата данни.
- Затова и прилагам кода си от файл ArticleController.php: https://pastebin.com/mj7Pjte5
- Прилагам и линк към грешката, която браузърът ми дава, като му подавам да иде на адрес“http://localhost:8000/article/create”: https://photos.google.com/photo/AF1QipPKETRqubVvFTttjtkRux4ngKaQFShxZ_n5zvg5 Преди не ми даваше такава грешка, а отваряше формата за статии, които обаче не се запаметяваха в БД(както вече описах в т.3). Странно как, като приключих всички стъпки от проекта, бутона „create“ изчезна…
Благодаря за бързия отговор.
Така е - липсваше ми Route към фунцията create, затова добавих следната анотация към фунцията create:
Като сега ми дава следните грешки:
NotFoundHttpException: No route found for "GET /article/create"
ResourceNotFoundException:
Явно в ArticleController.php има и друго за оправяне. Например в първата функция createAction ми подчертава всичко това:
Не може да имаш две функции с един и същ Route, request method и name. Ако и двете функции ти слушат на article/create, трябва да са на различни requesst method-и поне (GET, POST) и name-а на Route да е различен (както говорихме на лекция - това са все едно ключове в речник, два еднакви ключа означава едното да override-не другото).
Може на долния метод, който обработва формата да му смениш каквото пише в name="". и да добавиш още една анотация - @Method({"POST"}), а на горния да добавиш @Method({"GET"}). Което означава че едната функция ще се извика само при непопълнен формуляр, а другата само при попълнен (за да няма двузначност).
Друг вариант е да изместиш всичко в една функция, както правихме на лекция (т.е. да имаш само втората функция, а първата да я изтриеш).
Много благодаря за подробните разяснения.
Изтрих функцията createAction, но пак ми дава следните грешки:
No route found for "GET /article/create"
404 Not Found - NotFoundHttpException
1 linked Exception:
ResourceNotFoundException »
[2/2] NotFoundHttpException: No route found for "GET /article/create" +
[1/2] ResourceNotFoundException:
А ето как ми изглежда сега файла ArticleController.php: https://pastebin.com/SmmjiQCh.
Три дни отделих, за да разбера тези толкова логични връзки в този основен и ключов проект, но уви...