属性"password"和方法之一都不存在 twig/symfony



我想通过将 show_password_field作为true在 AddUserType.php中的可选值中作为true来重复使用表单字段。我的编辑表单字段不应包含密码字段。所以我已经使用了这个

if ($options['show_password_field']) {
      $builder->add('password','password',array('required'=>true));
    }

形式类型。有人可以弄清楚吗?树枝文件的第37行中的问题是什么。

属性"密码"也不是一种方法"密码()", " getPassword()"/" ISPassword()"或" __call()"存在并拥有公共 在类" Symfony Component form formView"类中访问 sokoSimueditorBundle:用户:adduser.html.twig在第37行。

addusertype.php

   namespace SokosimuEditorBundleFormType;
   use SymfonyComponentFormAbstractType;
   use SymfonyComponentFormFormBuilderInterface;
   use SymfonyComponentFormExtensionCoreTypeSubmitType;
   use SymfonyComponentOptionsResolverOptionsResolverInterface;
  class AddUserType extends AbstractType
  {
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
    $builder->add('alias','text',array('required'=>false));
    $builder->add('email', 'email',array('required'=>false));
    if ($options['show_password_field']) {
        $builder->add('password','password',array('required'=>true));
    }
    $builder->add('mobile','text',array('required'=>false));
    $builder->add('submit', 'submit');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'SokosimuUserBundleEntityUser',
        'show_password_field' => true
    ));
}
/**
 * Returns the name of this type.
 *
 * @return string The name of this type
 */
 public function getName()
 {
     return 'adduser';
  }
}

和第37行adduser.html.twig

<div class="form-group">
   <label for="password">Password:</label>
   {{ form_widget(form.password,{'attr':{'class':'form-row'}}) }}
   {{ form_errors(form.password) }}
  </div>

渲染编辑的控制器

public function editEditorUserAction(User $user,Request $request){
    $form = $this->createForm(new AddUserType(),$user,array(
        'show_password_field' => false));
    $form->handleRequest($request);
    if($form ->isValid() && $form->isSubmitted()){
        $em = $this->get('doctrine')->getManager();
        $editUser = $user ->getEditoruser();
        $em->persist($editUser);
        $em->flush();
        return $this->redirect($this->generateUrl('sokosimu_editor_userlist'));
    }
    return $this->render('SokosimuEditorBundle:User:addUser.html.twig', array(
        'form' => $form->createView(),
         'user' => $user->getId()
    ));
  }

您必须检查form.password是否存在。

{% if form.password is defined %}
    <div class="form-group">
        <label for="password">Password:</label>
        {{ form_widget(form.password,{'attr':{'class':'form-row'}}) }}
        {{ form_errors(form.password) }}
    </div> 
{% endif %}

最新更新