变量 "form "不存在。Symfony 4

问题描述 投票:0回答:1

我是Symfony 4的新手,我正在按照这个教程来做"https:/symfony.comdoc4.4forms.html。",但它不能识别我的变量 "form",我不知道为什么(所有东西都是最新的)。

我的控制器 :

<?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) }}

在我的 "search.html.twig "中。

mongodb forms search symfony4
1个回答
0
投票

我做了一些新的事情(对我来说很简单),但我有一个错误 "试图调用一个名为 "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()
        ]);
    }

我在我的'search.html.twig'中这样调用它。

{{form_start(form)}}

    {{form(form)}}

{{form_end(form)}}

这里是我的 "base.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>
© www.soinside.com 2019 - 2024. All rights reserved.