2017-01-11 55 views
0

我有一個Silex表單的問題。 (一個簡單的測試)。Silex表單 - 方法錯誤(POST/GET)

註解來自包:https://github.com/danadesrosiers/silex-annotation-provider

這是我的函數:

/** 
    * @SLX\Route(
    *  @SLX\Request(method="GET", uri="add"), 
    *  @SLX\Bind(routeName="departement.add") 
    *) 
    */ 
    public function add(Application $app, Request $request) 
    { 
     $data = []; 
     $form = $app['form.factory']->createBuilder(FormType::class, $data) 
     ->add('nom_dep',null,array('label' => 'Nom :')) 
     ->getForm(); 

     $form->handleRequest($request); 

     if ($form->isValid()) { 
      $data = $form->getData(); 

      dump("test");die(); 
      return $app->redirect($app["url_generator"]->generate("departement.index")); 
     } 

     // display the form 
     return $app['twig']->render('departement/new.html.twig', array('form' => $form->createView())); 
    } 

這是我的看法:

{{ form_start(form, { 'attr': { 'class': 'form-horizontal form-condensed', 'role': 'form' } }) }} 
    <fieldset> 
    <legend>Création</legend> 
     <div class="row"> 
      <div class="col-sm-12"> 
       <div class="form-group"> 
        <label for="{{ form.nom_dep.vars.id }}" class="col-lg-2 control-label">Nom :</label> 
        <div class="col-lg-10"> 
         {{ form_widget(form.nom_dep,{'attr': {'class': 'form-control'}}) }} 
        </div> 
       </div> 
       <div style="margin-top: 50px;" class="form-group"> 
        <div class="col-lg-10 col-lg-offset-2"> 
        <input type="submit" value="Créer" class="btn btn-info" /> 
        </div> 
       </div> 
      </div> 
     </div> 
    </fieldset> 
{{ form_end(form) }} 

和表單的結果:

<form name="form" method="post" class="form-horizontal form-condensed" role="form"> 
    <fieldset> 
    <legend>Création</legend> 
     <div class="row"> 
      <div class="col-sm-12"> 
       <div class="form-group"> 
        <label for="form_nom_dep" class="col-lg-2 control-label">Nom :</label> 
        <div class="col-lg-10"> 
         <input type="text" id="form_nom_dep" name="form[nom_dep]" required="required" class="form-control"> 
        </div> 
       </div> 
       <div style="margin-top: 50px;" class="form-group"> 
        <div class="col-lg-10 col-lg-offset-2"> 
        <input type="submit" value="Créer" class="btn btn-info"> 
        </div> 
       </div> 
      </div> 
     </div> 
    </fieldset> 
<input type="hidden" id="form__token" name="form[_token]" value="CGhbs1VCxoJ1DFHkLKodt9bRaEZCH1JEoqYJh8TK7I8"></form> 

但是當我提交表單,我得到以下錯誤:

No route found for "POST /departement/add": Method Not Allowed (Allow: GET) 

這是正常的,因爲我的路線是GET方法。 如果我更改爲POST,我無法顯示視圖,因爲它是GET方法。

任何幫助,歡迎。謝謝 !

回答

0

如果我正確閱讀文檔,則應該能夠這樣註冊

/** 
    * @SLX\Route(
    *  @SLX\Request(method="GET", uri="add"), 
    *  @SLX\Request(method="POST", uri="add"), 
    *  @SLX\Bind(routeName="departement.add") 
    *) 
    */ 
    public function add(Application $app, Request $request) 
    { 

的@request註解相關聯的多個請求方法URI模式到控制器的方法。如果給出多個@Request註釋,則所有修飾符都將應用於所有@Requests,除非它們包含在@Route註釋中。

+0

它的工作原理!謝謝 ! –