2016-12-02 25 views
0

我的動機是編輯此編輯表單中顯示的值。但是當我按編輯按鈕它會拋出這個錯誤。我無法弄清楚。任何人都可以幫助我的代碼中缺少什麼?某些強制性參數丟失(「用戶」)爲路由生成URL

一個例外模板的渲染過程中被拋出(「有些 強制性參數丟失(」用戶「)來生成路線 一個URL‘sokosimu_editor_edit_editoruser’。」)在 SokosimuEditorBundle:用戶:editUser .html.twig在管線7 500內部 服務器錯誤 - 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'; 
} 
} 

回答

0

修正路線

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

修復控制器

public function editEditorUserAction(Request $request, $userId) 
{ 
    $user = $this->getDoctrine()->getRepository('SokosimuEditorBundle:User')->find($userId); 
    $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() 
    )); 
} 
1

您需要將用戶在路徑:

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

並在控制器使樹枝用戶:

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

謝謝@ panche14你給了我下面一些修改我已經評論過的答案的想法。 –

+0

不客氣@SaugatBhattarai :) – panche14

0

在@ panche14,我修改了一下代碼.Answer from @ panche14 returned object,but the form @param expected to be string or integer。

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

此外,在樹枝文件補充一點:

{ '用戶':用戶}

由@ panche14

現在指定

,編輯按鈕作品按需要罰款。

+2

你應該評論@ panche14答案,以便他可以改進它,而不是回答幾乎相同的內容。 – Veve

+0

謝謝你的建議。因爲我必須添加代碼並且回答在評論中可能不明確。 –