Переменная «форма» не существует. Symfony 4 - PullRequest
0 голосов
/ 28 апреля 2020

Я новичок в Symfony 4 и следую этому уроку "https://symfony.com/doc/4.4/forms.html", но он не распознает мою переменную "форма" и не знаю почему (все до дата).

Мой контроллер:

<?php

namespace App\Controller;

use App\Entity\Task;
use App\Form\Type\TaskType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;



class TaskController extends AbstractController
{
    public function new(Request $request)
    {
        // creates a task object and initializes some data for this example
        $task = new Task();
        $task->setTask('Write a blog post');
        $task->setDueDate(new \DateTime('tomorrow'));

        /*$form = $this->createFormBuilder($task)
            ->add('task', TextType::class)
            ->add('dueDate', DateType::class)
            ->add('save', SubmitType::class, ['label' => 'Create Task'])
            ->setMethod('GET')
            ->getForm();*/

        $form = $this->createForm(TaskType::class, $task);

        return $this->render('search/search.html.twig', [
            'form' => $form->createView(),
        ]);
    }
}

Мой тип задачи. php:

<?php

namespace App\Form\Type;

use App\Entity\Task;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;

class TaskType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('task', TextType::class)
            ->add('dueDate', DateType::class)
            ->add('save', SubmitType::class);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Task::class,
        ]);
    }
}

И моя задача. php:

<?php

namespace App\Entity;

class Task
{
    protected $task;
    protected $dueDate;

    public function getTask()
    {
        return $this->task;
    }

    public function setTask($task)
    {
        $this->task = $task;
    }

    public function getDueDate()
    {
        return $this->dueDate;
    }

    public function setDueDate(\DateTime $dueDate = null)
    {
        $this->dueDate = $dueDate;
    }
}

Если вы видите какую-либо ошибку с моей стороны, я открыт ..

Я звоню здесь:

{{ form_start(form) }}

    {{ form(form) }}

{{ form_end(form) }}

В моем "поиске. html .twig" .

1 Ответ

0 голосов
/ 04 мая 2020

Я сделал что-то новое (и простое для меня), но у меня есть ошибка "Попытка вызвать неопределенный метод с именем" createFormBuilder "".

Вот мой контроллер:

public function searchBar(){
        $form = $this-> createFormBuilder(null)
            ->add('query', TextType::class)
            ->add('search', SubmitType::class, [
                'attr' => [
                    'class' => 'btn btn-primary'
                ]
            ])
            ->getForm();

        return $this->render('search/search.html.twig', [
            'form' => $form->createView()
        ]);
    }

Я называю это в моем «поиске» html .twig следующим образом:

{{form_start(form)}}

    {{form(form)}}

{{form_end(form)}}

А вот и моя «база». html .twig ':

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <title>{% block title %}{% endblock %}</title>
        {% block stylesheets %}{% endblock %}
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    </head>

    <body>
        {{ render(controller(
            'App\\Controller\\TaskController::searchBar'
        )) }}
        {% block body %}{% endblock %}

        {% block javascripts %}{% endblock %}
    </body>


</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...