2013-11-17 4 views
0

Я хочу добавить два поля «Имя» и «Первое имя» в регистрационную форму FosUser, но это не сработает. Вот что я делаю:Переопределить регистрационную форму FOSUser

CulturalStore/UserBundle/Ressources/конфигурации/services.yml:

services: 
cultural_store_user.registration.form.type: 
    class: CulturalStore\UserBundle\Form\Type\RegistrationFormType 
    arguments: [%cultural_store_user.model.user.class%] 
    tags: 
     - { name: form.type, alias: cultural_store_user_registration } 

CulturalStore/UserBundle/Форма/тип/RegistrationFormType:

<?php 

namespace CulturalStore\UserBundle\Form\Type; 

use Symfony\Component\Form\FormBuilderInterface; 
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; 

class RegistrationFormType extends BaseType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     parent::buildForm($builder, $options); 

     // add your custom field 
     $builder->add('name'); 
     $builder->add('firstname'); 
    } 

    public function getName() 
    { 
     return 'cultural_store_user_registration'; 
    } 

    public function getFirstName() 
    { 
     return 'cultural_store_user_registration'; 
    } 
} 

CulturalStore/UserBundle /Entity/User.php, я добавляю:

/** 
* @ORM\Column(type="string", length=255) 
* 
* @Assert\NotBlank(message="Entrez votre prénom.", groups={"Registration", "Profile"}) 
* @Assert\Length(
*  min=3, 
*  max="255", 
*  minMessage="Prénom trop court.", 
*  maxMessage="Prénom trop long.", 
*  groups={"Registration", "Profile"} 
*) 
*/ 
protected $firstname; 


/** 
* @ORM\Column(type="string", length=255) 
* 
* @Assert\NotBlank(message="Entrez votre nom.", groups={"Registration", "Profile"}) 
* @Assert\Length(
*  min=3, 
*  max="255", 
*  minMessage="Nom trop court.", 
*  maxMessage="Nom trop long.", 
*  groups={"Registration", "Profile"} 
*) 
*/ 
protected $name; 

В приложении/config .yml у меня есть:

registration: 
    confirmation: 
     from_email: 
      address:  "[email protected]" 
      sender_name: "noreply - CulturalStore" 
     enabled: true 
     template: CulturalStoreUserBundle:Registration:email.txt.twig 
    form: 
     type: cultural_store_user_registration 

Но у меня есть эта ошибка:

ParameterNotFoundException: Служба «cultural_store_user.registration.form.type» имеет зависимость от несуществующего параметра «cultural_store_user.model.user .класс".

ответ

4

Эта строка в файле служб: arguments: [%cultural_store_user.model.user.class%]

должен быть заменен arguments: [%fos_user.model.user.class%]

Также читать Overriding Default FOSUserBundle Forms

+0

Thx, кажется лучше :) У меня есть эта ошибка: /: AnnotationException: [Semantical Error] Аннотации "@Assert \ NotBlank" в свойстве CultureStore \ UserBundle \ Entity \ User :: $ firstname никогда не импортировалось. Возможно, вы забыли добавить выражение «use» для этой аннотации? – user2178964

+1

@ user2178964 убедитесь, что вы используете 'Symfony \ Component \ Validator \ Constraints as Assert'' в вашем файле 'CultureStore/UserBundle/Entity/User.php'. – takeit

+0

thx, все работает :) – user2178964

0

добавить на parameters.yml

parameters: 
    cultural_store_user.model.user.class: CulturalStore\UserBundle\Entity\User 
+0

Я не понимаю, почему добавление что-то в параметрах.yml, offen, мы ничего не добавляем в этот файл, потому что это почти только для параметров базы данных нет? Я пробую трюк, но теперь у меня есть: AnnotationException: [Семантическая ошибка] Аннотации «@Assert \ NotBlank» в свойстве CultureStore \ UserBundle \ Entity \ User :: $ firstname никогда не импортировались. Возможно, вы забыли добавить выражение «use» для этой аннотации? – user2178964

+0

Вы должны добавить его в bundles parameters.yml, а не в глобальный, потому что он перезаписывается каждый раз, когда вы запускаете композитор (см. Http://stackoverflow.com/questions/17451695/symfony2-stop-composer-installing-parameters- yml-dist-in-parameters-yml, если вы хотите это предотвратить). Новая ошибка связана с тем, что вы не добавили аннотацию Assert в инструкцию использования. Добавить 'use Symfony \ Component \ Validator \ Constraints as Assert;' поверх объекта –

Смежные вопросы