Loading...
hrimar avatar hrimar 6 Точки

Проблем с добавянето на статии към HeidiSQL от Blog - PHP and Symfony

Моля, за помощ за завършването на този проект. Ето докъде съм стигнал:

  1. Успешно регистрирам потребители и те се записват в базата данни в HeidiSQL.
  2. Проблем с тази задача се появи на стъпка IV.9. - Implementing Article Create Function, зс това, че не се генерира “createView“ (както каза Калин – създадох си го сам). Но точно в тази точка от проекта хем се казва „we need to create a new function. We will name it “createAction”“, хем после създадената функция носи името „create“, вместо “createAction”???
  3. Когато тествах кода си на тази стъка,  все пак се появи линк за създаване на статия, но като зададох име и съдържание на статията, те не се запомняха и не се появиха в базата данни.
  4. Затова и прилагам кода си от файл ArticleController.php:  https://pastebin.com/mj7Pjte5
  5. Прилагам и линк към грешката, която браузърът ми дава, като му подавам да иде на адрес“http://localhost:8000/article/create”:  https://photos.google.com/photo/AF1QipPKETRqubVvFTttjtkRux4ngKaQFShxZ_n5zvg5   Преди не ми даваше такава грешка, а отваряше формата за статии, които обаче не се запаметяваха в БД(както вече описах в т.3). Странно как, като приключих всички стъпки от проекта, бутона „create“ изчезна…

 

 

0
Софтуерни технологии 24/07/2017 10:57:17
RoYaL avatar RoYaL Trainer 6849 Точки

Здравей,

create функцията ти няма Route, съответно няма как да изпратиш формуляр към нея, не знае на кой адрес да се изпълни.

0
hrimar avatar hrimar 6 Точки

Благодаря за бързия отговор.

Така е - липсваше ми Route към фунцията create, затова добавих следната анотация към фунцията create:

/**
 * @Route("/article/create", name="article_create")
 *
 * @return \Symfony\Component\HttpFoundation\Response
 */

Като сега ми дава следните грешки:

 NotFoundHttpException: No route found for "GET /article/create"  +

 ResourceNotFoundException:   +

 

Явно в ArticleController.php има и друго за оправяне. Например в първата функция createAction ми подчертава всичко това:

return $this->render('article/create.html.twig',
    array('form' => $form->createView()));
0
RoYaL avatar RoYaL Trainer 6849 Точки

Не може да имаш две функции с един и същ Route, request method и name. Ако и двете функции ти слушат на article/create, трябва да са на различни requesst method-и поне (GET, POST) и name-а на Route да е различен (както говорихме на лекция - това са все едно ключове в речник, два еднакви ключа означава едното да override-не другото).

Може на долния метод, който обработва формата да му смениш каквото пише в name="". и да добавиш още една анотация - @Method({"POST"}), а на горния да добавиш @Method({"GET"}). Което означава че едната функция ще се извика само при непопълнен формуляр, а другата само при попълнен (за да няма двузначност).

Друг вариант е да изместиш всичко в една функция, както правихме на лекция (т.е. да имаш само втората функция, а първата да я изтриеш).

0
hrimar avatar hrimar 6 Точки

Много благодаря за подробните разяснения.

Изтрих функцията 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.

Три дни отделих, за да разбера тези толкова логични връзки в този основен и ключов проект, но уви...

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.