2017-01-11 14 views
0

シレックスフォームに問題があります。 (テストするのは簡単です)。バンドルから来シレックスフォーム - メソッドエラー(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> 

しかし、私は、フォームを送信すると、私は次のエラーを取得する:私のルートは、GETメソッドであるため、

No route found for "POST /departement/add": Method Not Allowed (Allow: 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アノテーションが指定されている場合、すべての修飾子は@Routeアノテーションでラップされていない限り、すべての@Requestsに適用されます。

+0

ありがとう! –