2016-12-02 3 views
0

zu generieren. Meine Motivation ist es, die in diesem Bearbeitungsformular angezeigten Werte zu bearbeiten. Aber wenn ich die Bearbeitungsschaltfläche drücke, wird dieser Fehler ausgegeben. Ich kann es nicht herausfinden. Kann mir jemand helfen, was in meinem Code fehlt?Einige obligatorische Parameter fehlen ("Benutzer"), um eine URL für die Route

Eine Ausnahme während der Wiedergabe einer Vorlage geworfen wurde ("Einige Pflichtparameter fehlen (" user sokosimu_editor_edit_editoruser ") eine URL für Route zu generieren "".") In SokosimuEditorBundle: Benutzer: editUser .html.twig in Zeile 7 500 Internal Server Error - Twig_Error_Runtime

Router

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

-Controller

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() 
    )); 

}

Ansicht

{% 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 %} 

Formular

<?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'; 
} 
} 

Antwort

0

Fix Route zu

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

Fix-Controller

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

Sie müssen Benutzer auf dem Weg passieren:

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

Und Controller den Zweig mit Benutzer machen:

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

Vielen Dank @ panche14 Sie gaben mir eine Idee für die Antwort Ich habe unten mit einigen Änderungen kommentiert. –

+0

Sie sind herzlich willkommen @SaugatBhattarai :) – panche14

0

Mit der Hilfe von @ panche14, ich habe den Code ein bisschen geändert.Antwort von @ panche14 zurückgegebenen Objekt, aber die Form @ param erwartet String oder Integer.

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

Auch diese Datei im Zweig hinzu:

{ 'user': user}

wie angegeben von @ panche14

nun auf die Schaltfläche Bearbeiten Werke fein wie gewünscht.

+2

Sie sollten @ panche14 Antwort kommentiert haben, damit er es verbessern konnte, anstatt mit fast dem gleichen Inhalt zu antworten. – Veve

+0

Vielen Dank für den Vorschlag. Weil ich Code und Antwort hinzufügen muss, kann es im Kommentar mehrdeutig sein. –

Verwandte Themen