2016-02-25 28 views
1

我正在將代碼更新爲Symfony3標準,但我遇到了一些表單問題。我試了好東西,但沒有什麼工作。Symfony2:將{{form_enctype}}更改爲{{form_start}}並使用自定義路徑

在我的樹枝:

<form action="{{ path('paces_colle_gestioncsv_imprimer', 
{ 'id' : document.id }) }}" method="post" {{ form_enctype(form) }}> 
</form> 

{{form_enctype}}是因爲Symfony的2.8棄用。我得的路徑,控制器將其更改爲{{form_start}}

在我的控制器:

public function ajouterErrataAction($id) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $document = $em->getRepository('PACESColleBundle:DocumentCSV')->find($id); 
    if(!$document){ 
     throw $this->createNotFoundException('Document inexistant'); 
    } 
    $colle = $document->getColle(); 

    $form = $this->createForm(ajouterErrataType::class); 

    return $this->render('PACESColleBundle:Classement:ajouterErrata.html.twig', array(
     "colle" => $colle, 
     "document" => $document, 
     "form" => $form->createView() 
    )); 
} 

我formType:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('errata', TextareaType::class, array('required' => false, 
              'attr' => array('class'=>'ckeditor') 
     )) 

     ->add('precision', TextareaType::class, array('required' => false, 
              'attr' => array('class'=>'ckeditor'))) 

     ->add('submit',SubmitType::class, array('label' => 'Imprimer')); 
    ; 
} 

回答

0

您可以設置這樣的操作路徑:

$form = $this->createForm(ajouterErrataType::class, $data, [ 
     'action' => $this->generateUrl(''paces_colle_gestioncsv_imprimer', ['id' => $document->getId()]), 
     'method' => 'POST', 
    ]); 
1

可以在控制器覆蓋行動或模板: http://symfony.com/doc/current/book/forms.html#changing-the-action-and-method-of-a-form 您是否嘗試過?

+0

我已經嘗試過這一點,但動作不會被渲染。 控制器: '$形式= $這 - >的CreateForm(ajouterErrataType ::類,陣列( '動作'=> $這 - > generateUrl( 'paces_colle_gestioncsv_imprimer',陣列( 'ID'=> $文檔 - >的getId())), '方法'=> 'POST' ));' –

+0

方法的CreateForm的第二個參數是被綁定到形成數據。使用第三個參數: '$ this-> createForm(ajouterErrataType :: class,_ [entity or array] _,**('action'=> $ this-> generateUrl('paces_colle_gestioncsv_imprimer',array('id'=> $ {document.getId())),'method'=>'POST'))**);' 或嘗試模板: '{{form_start(form,{'action':path路線]), '方法': 'POST'})}}' – auroree

+0

抱歉耽擱:我用別的東西所佔據。 我有一個很難搞清楚,我的這種形式的實體爲空。 –

0

做的Symfony的3路就像this

$form = $this->createForm(TaskType::class, $task, array(
    'action' => $this->generateUrl('target_route'), 
    'method' => 'GET', 
)); 
相關問題