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

Проблем с добавянето на статии към 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 SoftUni Team Trainer 6846 Точки

Здравей,

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

0
hrimar avatar hrimar 5 Точки

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

Така е - липсваше ми 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 SoftUni Team Trainer 6846 Точки

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

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

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

0
hrimar avatar hrimar 5 Точки

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

Изтрих функцията 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
RoYaL avatar RoYaL SoftUni Team Trainer 6846 Точки

нямаш @ пред Route :)

0
hrimar avatar hrimar 5 Точки

За съжаление не е само това…

Направих трети път този проект (последно на InteliJ IDEA + 2 пъти на PhpStorm) и файлът create.html.twig успя сам да се генерира, но имам несъответствия в Entity->Article.php и User.php и сега дори не мога да упдейтна базата (странно как преди ми разреши, при положение, че също имах несъответствия там).

Моля, ако може никой да го качи или да ми го прати, дори и след срока за предаване, все пак е базов.

0
25/07/2017 14:29:17
RoYaL avatar RoYaL SoftUni Team Trainer 6846 Точки

Дай да ги видим двете ентитита

0
hrimar avatar hrimar 5 Точки

Вече нещата стоят така:

1 В ArticleController.php вече няма проблеми. 
2 Записват се статии в базата, но на http://localhost:8000/ ми дава следната грешка:

"Class 'SoftUniBlogBundle\Controller\Article' does not exist
500 Internal Server Error - MappingException"

2 Все още Entity/Article.php дава проблем на ред 151 от ф-ята addPost(Article $article) :
https://pastebin.com/pApAKmtr

3 В HomeController.php  ми казава на последния ред "недефинирана променлива '$articles'":
class HomeController extends Controller
{
    /**
     * @Route("/", name="blog_index")
     * @Method("GET")
     */
    public function indexAction()
    {
        $article = $this->getDoctrine()->getRepository(Article::class)->findAll();
        return $this->render('blog/index.html.twig', ['articles'=>$articles]);
    }
}

0
26/07/2017 09:33:54
RoYaL avatar RoYaL SoftUni Team Trainer 6846 Точки

Светка ли ти в ИДЕ-то това Article::class? Предполатам нямаш use statement - ако свети дай alt+enter и го import-ни. За другото - грешката е видима - използваш грешно име на променлива :)

0
hrimar avatar hrimar 5 Точки

Мда, в HomeController променливата я оправих на $articles и там сега е спокойно, но
нито в ArticleController, нито в HomeController ми свети Article::class.

 

В Entity\Article.php ми свети "SoftUniBlogBundle\Entity\Article" тук:
 /**
     * @var ArrayCollection
     *
     * @ORM\OneToMany(targetEntity="SoftUniBlogBundle\Entity\Article", mappedBy="author"
     */
    private $articles;

    и все така подчертава на ф-ята addPost(Article $article) -  "return $this;"
    


    Не бях обърнал внимание, че в Resources/SoftUniBlogBundle.php класа 
    class SoftUniBlogBundle extends Bundleе празен?

 

И така грешката "Class 'SoftUniBlogBundle\Controller\Article' does not exist" при стартиране на индекс страницата си остава, а всичко друго по блога работи.

0
RoYaL avatar RoYaL SoftUni Team Trainer 6846 Точки

Добре там в addPost значи свети този Article :) то вероятно ти пише на кой ред е в грешката в браузъра

0