2012-10-29 121 views
0

我試圖在窗體中爲特定用戶放置兩個隱藏域。我有這樣的代碼:symfony2窗體隱藏行

<div id="mio_miobundle_empleadotype"> 
{{ form_row(edit_form.dni) }} 
{{ form_row(edit_form.nombre) }} 
{{ form_row(edit_form.username) }} 
{{ form_row(edit_form.apellido1) }} 
{{ form_row(edit_form.apellido2) }} 
{{ form_row(edit_form.localidad) }} 
{{ form_row(edit_form.provincia) }} 
{{ form_row(edit_form.telefono) }} 
{{ form_row(edit_form.movil) }} 
{{ form_row(edit_form.email) }} 
{{ form_row(edit_form.direccion) }} 
{% if is_granted('ROLE_A') %}  
     {{ form_row(edit_form.activo) }} 
     {{ form_row(edit_form.role) }} 
{%endif%} 
{{ form_row(edit_form.password) }} 

和:

$builder 
      ->add('dni','text',array('label' => 'Dni')) 
      ->add('nombre','text',array('label' => 'Nombre')) 
      ->add('username','text',array('label' => 'Usuario')) 
      ->add('apellido1','text',array('label' => 'Apellido1')) 
      ->add('apellido2','text',array('label' => 'Apellido2')) 
      ->add('email','email',array('label' => 'Email')) 
      ->add('localidad','text',array('label' => 'Localidad')) 
      ->add('provincia','text',array('label' => 'Provincia')) 
      ->add('telefono','text',array('label' => 'Teléfono')) 
      ->add('movil','text',array('label' => 'Móvil')) 
      ->add('direccion','text',array('label' => 'Dirección')) 
      ->add('activo') 
      ->add('role') 
      ->add('password', 'repeated', array('first_name' => 'Nueva contraseña','second_name' => 'Repite contraseña','type' => 'password' ,'invalid_message'=> 'Las contraseñas deben ser iguales.')) 
     ; 
    } 

,但我得到這個錯誤:

Catchable Fatal Error: Argument 1 passed to mio\mioBundle\Entity\Empleado::setRole() must be an instance of mio\mioBundle\Entity\Role , null given, called in /var/www/Symfony/vendor/symfony/src/Symfony/Component/Form/Util/PropertyPath.php on line 347 and defined in /var/www/Symfony/src/mio/mioBundle/Entity/Empleado.php line 289

我說,因爲我必須在國家填寫任何幫助嗎?

+0

你爲什麼需要這些隱藏字段? –

回答

-1

而不是完全不呈現字段,請嘗試隱藏使用CSS的視圖中的字段。

{% if is_granted('ROLE_A') %}  
     {{ form_row(edit_form.activo) }} 
     {{ form_row(edit_form.role) }} 
{% else %} 
     {{ form_widget(edit_form.activo, { 'attr': {'class': 'hide'} }) }} 
     {{ form_widget(edit_form.role, { 'attr': {'class': 'hide'} }) }} 
{% endif %} 
0

放入控制器

public function someAction() 
{ 
    $form = $this->createFrom(// ... 
    if (false === $this->get('security.context')->isGranted('ROLE_A')) { 
     $form->remove('activo'); 
     $form->remove('role'); 
    } 

    // ... 
} 

而且在模板檢查檢查角色代碼,如果表單字段定義

{{ edit_form.activo is defined ? form_row(edit_form.activo) : '' }} 
{{ edit_form.role is defined ? form_row(edit_form.role) : '' }}