简体   繁体   English

未知的“表单”函数 php symfony/form twig

[英]Unknown "form" function php symfony/form twig

In my project I have installed symfony / form, symfony / twig-bridge but whenever I run the template does not recognize me the tags to render the forms that I could miss?在我的项目中,我安装了 symfony / form、symfony / twig-bridge 但是每当我运行模板时,我都无法识别我可能会错过的用于呈现表单的标签? both are in version 5, all the time show this , Unknown "form" function , Unknown "form_start" function两者都在第 5 版,一直显示这个,未知的“form”函数,未知的“form_start”函数

require 'vendor/autoload.php'; 
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;
use Symfony\Component\Form\Forms; 
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Validator\Validation;
use Symfony\Bridge\Twig\Form\TwigRendererEngine;     
use Symfony\Component\Form\Extension\Validator\ValidatorExtension;
use Symfony\Component\Form\Extension\Csrf\CsrfExtension;
use Symfony\Component\Security\Csrf\CsrfTokenManager;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\XliffFileLoader;
use Symfony\Bridge\Twig\Extension\TranslationExtension;
use Symfony\Bridge\Twig\Extension\FormExtension;
use Symfony\Component\Form\FormView;

class TaskController extends AbstractType
{
public function new()
{
    // creates a task object and initializes some data for this example       
    $formFactory = Forms::createFormFactory();
    $form = $formFactory->createBuilder()
        ->add('task', TextType::class)
        ->add('dueDate', DateType::class)
        ->add('save', SubmitType::class, ['label' => 'Create Task'])
        ->getForm();

    $loader = new \Twig\Loader\FilesystemLoader('vista/parte');
    $twig = new \Twig\Environment($loader, ['debug' => true]);                
    return $twig->render('foms.html.twig', ['form' => $form->createView()]);       
}
}

(new TaskController())->new();

You are missing few things here.你在这里遗漏了一些东西。

Controller and form types are two separate things.控制器和表单类型是两个不同的东西。 You can create your form in your controller, and then pass it to the view.您可以在控制器中创建表单,然后将其传递给视图。

However if you want to separate your form from your controller, you can create a form type that will extend AbstractType但是,如果您想将表单与控制器分开,您可以创建一个扩展AbstractType的表单类型

This should look like this:这应该是这样的:

class TaskController extends AbstractController // add the use for that one
{
    public function new()
    {
        $form = $this->createFormBuilder()
            ->add('task', TextType::class)
            ->add('dueDate', DateType::class)
            ->add('save', SubmitType::class, ['label' => 'Create Task'])
            ->getForm();

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM