我正在將我的項目從Symfony 2.2升級到Symfony 3.1,並且在多次複合之後,我發現了錯誤但我無法修復它。我發現問題出在我的「形式」上,但我看不到在哪裏。無法加載類型「文本」Symfony 3表格
這裏是我的表格/ 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';
}
}
[第91行中的vendor/symfony/symfony/src/Symfony/Component/Form/FormRegistry.php中的[無法加載類型「文本」]的可能副本](http://stackoverflow.com/questions/33160763/could-not -load-type-text-in-vendor-symfony-symfony-src-symfony-component-form) – qooplmao
我沒有使用新的symfony,但我知道他們改變了窗體。您可能需要爲文本使用類似TextType :: class的內容。 – Eli