繁体   English   中英

无法加载“文本” Symfony 3表格类型

[英]Could not load type “text” Symfony 3 Form

我将我的项目从Symfony 2.2升级到Symfony 3.1,经过多次验证,我发现并出错,但无法修复。 我看到问题出在我的“表单”上,但是我看不到哪里。

这是我的表格/user.php和uerbundle / controller.php

谢谢,

大卫

 <?php namespace Admin\\UserBundle\\Controller; use Symfony\\Bundle\\FrameworkBundle\\Controller\\Controller; use Symfony\\Component\\HttpFoundation\\Response; use Admin\\UserBundle\\Entity\\User; use Admin\\UserBundle\\Form\\UserType; class DefaultController extends Controller { const bundleName = 'AdminUserBundle'; const entityName = 'User'; const indexRoute = 'admin_user'; const repository = 'Admin\\UserBundle\\Entity\\User'; public function indexAction() { $repository = $this->getDoctrine()->getManager() ->getRepository('AdminUserBundle:User'); $usersList = $repository->findAll(); return $this ->render('AdminUserBundle:Default:index.html.twig', array('usersList' => $usersList, 'description' => 'Liste des utilisateurs')); } public function addAction() { return $this->formAction(new User(), 'Ajouter un utilisateur'); } public function modifyAction($id) { // récupération des données via l'id de l'utilisateur sélectionné $user = $this->getDoctrine() ->getRepository(self::repository)->find($id); return $this->formAction($user, 'Modifier un utilisateur'); } private function formAction($user, $description) { $form = $this->createForm(UserType::class, $user); // récupération de la requête $request = $this->get('request'); // vérification du type de la requete if ($request->getMethod() == 'POST') { // execution de la requete $form->bind($request); // vérification de la validité des données saisies if ($form->isValid()) { // enregistrement de l'objet $user dans la BD $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); // redirection vers la page de visualisation de la liste des utilisateurs return $this->redirect($this->generateUrl(self::indexRoute)); } } // - si requete de type GET, donc le visiteur vient d'arriver sur la page et veut voir le formulaire // - si requete de type POST, mais le formulaire n'est pas valide, donc on l'affiche de nouveau return $this ->render('AdminUserBundle:Default:form.html.twig', array('form' => $form->createView(), 'description'=> $description, 'index_route' => self::indexRoute)); } public function changeStatusAction($id) { // récupération des données via l'id de l'utilisateur sélectionné $user = $this->getDoctrine() ->getRepository('Admin\\UserBundle\\Entity\\User')->find($id); // inversion de la valeur de l'attribut "enabled" de l'utilisateur $user->setEnabled(!$user->isEnabled()); // enregistrement de notre objet $user dans la base de données $em = $this->getDoctrine()->getManager(); $em->persist($user); $em->flush(); // redirection vers la page de visualisation de la liste des utilisateurs return $this->redirect($this->generateUrl(self::indexRoute)); } } 

 <?php namespace Admin\\UserBundle\\Form; use Symfony\\Component\\Form\\FormBuilderInterface; use FOS\\UserBundle\\Form\\Type\\RegistrationFormType; class UserType extends RegistrationFormType { public function __construct() { parent::__construct('Admin\\UserBundle\\Entity\\User'); } public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $builder->add('acronym', 'text') ->add('firstname', 'text') ->add('lastname', 'text') ->add('roles', 'choice', array( 'choices' => array( 'ROLE_PROJECT_MANAGER' => 'Chef de projet', 'ROLE_USER' => 'Contributeur', 'ROLE_OPERATOR' => 'Exploitant', 'ROLE_ADMIN' => 'Administrateur'), 'multiple' => true, 'expanded' => true)); } public function getName() { return 'admin_userbundle_usertype'; } } 

尝试使用

->add('task', TextType::class)

代替

->add('task', 'text')

从可在此处找到的文档中: http : //symfony.com/doc/current/forms.html#building-the-form

您必须使用新的FormType类并将类名称用作类型:

// src/AppBundle/Controller/DefaultController.php
namespace AppBundle\Controller;

use AppBundle\Entity\Task;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class DefaultController extends Controller
{
    public function newAction(Request $request)
    {
        // create a task and give it some dummy 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, array('label' => 'Create Task'))
            ->getForm();

        return $this->render('default/new.html.twig', array(
            'form' => $form->createView(),
        ));
    }
}

暂无
暂无

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

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