2017-01-11 13 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) 
    { 

The @Request аннотаций связывает Uri шаблон для метода контроллера. Если заданы несколько аннотаций @Request, все модификаторы будут применены ко всем @Requests, если они не будут завернуты в аннотацию @Route.

+0

Это работает! Благодаря ! –

 Смежные вопросы

  • Нет связанных вопросов^_^