Проблема форм Symfony - переменная форма не существует - PullRequest
0 голосов
/ 09 марта 2019

Я создаю приложение crud, используя symfony 4. Вот код контроллера:

<?php

namespace App\Controller;

 use App\Entity\Taskslist;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 use Symfony\Bundle\FrameworkBundle\Controller\Controller;
 use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\TextType;
 class TodoController extends Controller{


/**

*   @Route("/",name="todo_list")


*/
public function listAction(){
   $todos=$this->getDoctrine()->getRepository('App:Taskslist')->findAll();
    return $this->render('todo/index.html.twig',array('todos' => $todos));

}
/**

*   @Route("/todo/create",name="todo_create")


*/

public function createAction(Request $request){


           $todo = new Taskslist;

        $form = $this->createFormBuilder($todo)
        ->add('id', TextType::class)
        ->add('title', TextType::class)
        ->add('description', TextareaType::class)
        // ->add('priority', ChoiceType::class, array('choices' => array('Low' => 'Low', 'Normal' => 'Normal', 'High'=>'High'), 'attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
       // ->add('status', BooleanType::class, array('attr' => array('class' => 'form-control', 'style' => 'margin-bottom:15px')))
        ->add('Save', SubmitType::class, array('label'=> 'Create Todo'))
        ->getForm();

        $form->handleRequest($request);
        if($form->isSubmitted() &&  $form->isValid()){
            $name = $form['id']->getData();
            $category = $form['title']->getData();
            $description = $form['description']->getData();
            //$due_date = $form['status']->getData();
            //$name = $form['name']->getData();

            //$now = new\DateTime('now');  

            $todo->setId($name);
            $todo->setTitle($category);          
            $todo->setDescription($description);                  


            $sn = $this->getDoctrine()->getManager();      
            $sn -> persist($todo);
            $sn -> flush();


            return $this->redirectToRoute('todo_list');            

        }

        return $this->render('todos/create.html.twig', array(
            'form' => $form->createView()

        ));

}
/**

*   @Route("/todo/edit/{id}",name="todo_edit")


*/
public function editAction($id,Request $request){

    return $this->render('todo/edit.html.twig');

}
/**

*   @Route("/todo/details/{id}",name="todo_details")


*/

public function detailsAction($id){

    return $this->render('todo/details.html.twig');

}

 }

А вот edit.html.twig:

  {% extends 'base.html.twig' %}
  {% if form is defined %}

    {% block body %}

    {{form_start(form)}}
    {{form_widget(form)}}
    {{form_end(form)}}

    {% endblock %}
    {% endif %}

Я следовал всемучебники, но я получил эту ошибку, когда я нажал кнопку редактирования:

переменная форма не существует.

Хотя мой код входит в оператор if.Можете ли вы помочь мне? Спасибо заранее. Я не мог найти никакого рабочего решения

1 Ответ

0 голосов
/ 10 марта 2019

Я думаю, что проблема здесь:

{% extends 'base.html.twig' %}

{% if form is defined %}
{% block body %}
{{form_start(form)}}
{{form_widget(form)}}
{{form_end(form)}}
{% endblock %}
{% endif %}

используйте это вместо:

{% extends 'base.html.twig' %}

{% block body %}
    {{form_start(form)}}
    {{form_widget(form)}}
    {{form_end(form)}}
{% endblock %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...