缺少一些必需的参数(“用户")以生成用于路由的URL

问题描述:

我的动机是编辑此编辑表单中显示的值.但是,当我按下编辑按钮时,它会抛出此错误.我不知道.任何人都可以帮助解决我的代码中缺少的内容吗?

My motivation is to edit values displayed in this edit form. But when I press edit button it throws out this error. I can't figure it out. Can anyone help what is missing in my code?

在呈现模板的过程中引发了异常(缺少必填参数(用户")以生成路由的URL" sokosimu_editor_edit_editoruser.")第7行的SokosimuEditorBundle:User:editUser.html.twig.500内部服务器错误-Twig_Error_Runtime

An exception has been thrown during the rendering of a template ("Some mandatory parameters are missing ("user") to generate a URL for route "sokosimu_editor_edit_editoruser".") in SokosimuEditorBundle:User:editUser.html.twig at line 7. 500 Internal Server Error - Twig_Error_Runtime

路由器

sokosimu_editor_edit_editoruser:
    path: /edit/editoruser/{user}
    defaults: {_controller:SokosimuEditorBundle:Editor:editEditorUser}
    requirements:
            _method:  GET|POST

控制器

    public function editEditorUserAction(User $user,Request $request){

    $form = $this->createForm(new EditUserType(),$user);

    //2. handle the submit (will happen on POST)
    $form->handleRequest($request);
    if($form ->isValid() && $form->isSubmitted()){
    }
    $em = $this->get('doctrine')->getManager();

    $editUser = $user ->getEditoruser();
    return $this->render('SokosimuEditorBundle:User:editUser.html.twig', array(
        'form' => $form->createView()
    ));

}

查看

 {% block title %}Edit User{% endblock%}

 {% block body %}

<form action="{{ path('sokosimu_editor_edit_editoruser') }}" method="post" {{ form_enctype(form) }} class="formedit">
    {{ form_errors(form) }}

    {{ form_row(form.alias)}}
    {{ form_row(form.email) }}
    {#{{ form_row(form.password) }}#}
    {{ form_row(form.mobile) }}
    {{ form_row(form.submit) }}
    {{ form_rest(form) }}
  </form>
 {% endblock %}

表格

<?php

 namespace Sokosimu\EditorBundle\Form\Type;

 use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 use Symfony\Component\Form\AbstractType; 
 use Symfony\Component\Form\FormBuilderInterface;
 use Symfony\Component\OptionsResolver\OptionsResolverInterface;

 class EditUserType extends AbstractType
 {

   public function buildForm(FormBuilderInterface $builder, array $options)
  {
     $builder->add('alias','text',array('required'=>false));
     $builder->add('email', 'email',array('required'=>true));
    // $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' => 'Sokosimu\UserBundle\Entity\User'
     //   'data_class' => NULL
    ));
}

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

您需要在路径中传递用户:

You need to pass user in the path:

<form action="{{ path('sokosimu_editor_edit_editoruser', {'user': user}) }}" method="post" {{ form_enctype(form) }} class="formedit">

然后在控制器中用用户渲染树枝:

And in controller render the twig with user:

return $this->render('SokosimuEditorBundle:User:editUser.html.twig', array(
    'form' => $form->createView(),
    'user' => $user
));