Frage

Ich versuche, eine App basierend auf der REST-API und AngularJS zu erstellen.Ich habe dieses Tutorial verfolgt http://npmasters.com/2012/11/25/Symfony2-Rest-FOSRestBundle.html Ich muss aber einige Details ändern (veraltete Methoden) und jetzt, wenn ich poste, um eine neue Entität zu erstellen, erhalte ich die Fehlermeldung „Dieses Formular sollte keine zusätzlichen Felder enthalten“.

class MainController extends Controller
{
    public function indexAction(Request $request)
    {
        $form = $this->createForm(new TaskType(),null,array('action' => $this->generateUrl('post_tasks').'.json'))
                ->add('submit','submit');


        $note_form = $this->createForm(new NoteType())
                ->add('submit','submit');

        return $this->render('MyBundle:Main:index.html.twig',
                array(
                    'form'=>$form->createView(),
                    'note_form'=>$note_form->createView(),
                )
        );
    }
}

mein TaskType-Formular:

 public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder

            ->add('timeStart','datetime',array(
                'date_widget' => 'single_text',
                'time_widget' => 'single_text',
                'date_format' => 'yyyy-MM-dd',
                'data' => new \DateTime('now')
            ))

            ->add('timeStop','datetime',array(
                'date_widget' => 'single_text',
                'time_widget' => 'single_text',
                'date_format' => 'yyyy-MM-dd',
                'data' => new \DateTime('now')
            ))

            ->add('project')  
            ->add('descriptionTask')
            ->add('isCompleted',null,array('required' => false))  
            ->add('isVisible',null,array('required' => false))
        ;
    }

Im Moment rendere ich meiner Meinung nach nur ein Formular, ABER Ich befinde mich in der Testphase:

{%extends 'MyBundle::layout.html.twig' %}

{%block content %}

<div ng-view></div>

{{ form(form) }}

{% endblock %}

UND dies ist der REST-Controller, der die angegebene Entität leeren soll:

public function cpostAction(Request $request)
{
 $entity = new Task();
 $form = $this->createForm(new TaskType(), $entity);
 $form->handleRequest($request);

 if ($form->isValid()) {

     $em = $this->getDoctrine()->getManager();
     $em->persist($entity);
     $em->flush();

     return $this->redirectView(
             $this->generateUrl(
                 'get_organisation',
                 array('id' => $entity->getId())
                 ),
             Codes::HTTP_CREATED
             );
 }

 return array(
     'form' => $form,
 );
}

KOMISCHE SACHE: Wenn ich denselben Code vom REST-Controller in den MainController eingebe, wird das Formular validiert und die neue Entität wird geleert, aber irgendwie gibt der REST-Controller einen Fehler aus ...

War es hilfreich?

Lösung

es ist, denn wenn Sie das Formular generieren, das Sie hinzufügen, senden Sie jedoch, aber wenn Sie sie bestätigen, sind Sie nicht.Versuchen Sie:

generasacodicetagpre.

Die Schaltfläche Senden ist technisch ein Feld, obwohl Symfony standardmäßig mit Symfony standardmäßig auf eine Entitätseigenschaft aufzeichnet.Wenn Sie also das Formular mit einer Senden-Schaltfläche generieren, und senden Sie dann das Formular, das Sie in Ihrer Action-Controller-Aktion generieren, muss auch eine Senden-Schaltfläche verfügen.

Andere Tipps

Wenn Sie möchten, dass der Validator zusätzliche Felder ignoriert, sollten Sie versuchen, sie zu übergeben 'allow_extra_fields' => true als Option zum FormBuilder.

Wenn Sie die Feldervalidierung deaktivieren möchten, müssen Sie

hinzufügen generasacodicetagpre.

und in BuildForm-Methode:

generasacodicetagpre.

Weitere Informationen: http://symfony.com/doc/current/cookbook/form/dynnamic_form_modification.html#cokeBookbook-dynamic-form-modification-Suppresse-Form-Validation

Wenn Sie eine einzelne Submitype-Taste oder ähnliches hinzufügen, verwenden Sie die angegebene Lösung, die angezeigt wird. generasacodicetagpre.

Falls Sie jedoch ein Kollektion verwenden und ein Satz von Unterformularen einbetten, müssen Sie in Ihren Parametern "LOVE_ADD '=> TRUE in Ihren Parametern aufnehmen.In Ihrem EntityType-Formular-Builder:

generasacodicetagpre.

Stellen Sie sicher, dass Sie das für alle Einbettungsstufen tun, wenn Sie mehrere Ebenen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top