2013-10-07 5 views
1

Я новичок в Symfony. Я видел много потоков по этой теме, но никто не смог ответить на вопрос, который у меня есть.Доступ к данным HTML-формы в Symfony2

У меня есть контактная форма на моем сайте. Эта контактная форма отправляется в путь ('submit_query'), который вызывает submitQueryController. Я не создаю форму через Symfony, и я не использую объект или объект. Моя проблема в том, что независимо от того, что я делаю, я не могу получить доступ к данным формы в контроллере. Я пробовал все предложения нитей, которые я видел, и я либо получаю объект REQUEST с целым рядом данных (ни один из которых не является данными моей формы), либо я ничего не получаю.

Нет ли простого способа доступа к опубликованным данным формы из контроллера?

Мой HTML Форма:

<form id="contact_form" role="form" action="{{ path('submit_query') }}" method="post">` 
<div class="panel-body"> 
    <fieldset> 
     <div class="form-group"> 
      <label for="name" class="control-label">Name</label> 
      <input type="text" class="form-control" id="name" placeholder="Full Name" data-validation-error-msg="Please enter your full name" data-validation="length" data-validation-length="min1"> 
     </div> 
     <div class="form-group"> 
      <label for="email" class="control-label">Email Address</label> 
      <input type="email" class="col-sm-3 form-control" id="email" placeholder="Email Address" data-validation-error-msg="Please enter a valid email address" data-validation="email length" data-validation-length="min1"> 
     </div> 
     <div class="form-group"> 
      <label for="number" class="control-label">Contact Number</label> 
      <input type="text" class="form-control" id="number" placeholder="Contact Telephone Number"> 
     </div> 
     <div class="form-group"> 
      <label for="subject" class="control-label">Subject</label> 
      <input type="text" class="form-control" id="subject" placeholder="The subject of your query" data-validation-error-msg="Please enter a subject for your query" data-validation="length" data-validation-length="min1"> 
     </div> 
     <div class="form-group"> 
      <label for="query" class="control-label">Query</label> 
      <textarea class="form-control" id="query" rows="5" placeholder="Please enter a detailed description of your query" data-validation-error-msg="Please enter your query description" data-validation="length" data-validation-length="min1"></textarea> 
     </div>  
    </fieldset> 
</div> 
<div class="panel-footer clearfix text-center"><button type="submit" class="btn btn-default">Submit Query</button></div> 
</form> 

Контроллер:

Когда я пытаюсь:

public function submitQueryAction(Request $request) 
{ 
    $data = $request->request->all(); 
    die(var_dump($data)); 
} 

Я получаю пустой массив в "$ данных".

Когда я пытаюсь:

public function submitQueryAction() 
{ 
    $data = $this->getRequest()->request->all(); 
    die(var_dump($data)); 
} 

Я получаю vardump объекта запроса, но ни один из данных не мое. Я также попробовал решение, представленное Access POST values in Symfony2 request object для получения значений post без использования объекта или объекта, но я получаю сообщение об ошибке «Вызов неопределенного метода Symfony \ Component \ Form \ Form :: bindRequest()».

ПОЖАЛУЙСТА, ПОМОГАЙТЕСЬ. Спасибо заранее.

ответ

3

Вам не хватает атрибута name html для ваших входов.
Если элемент формы пропускает этот атрибут, его данные не будут отправляться.

От w3.org:

Каждый успешный контроль имеет свое название управления сопряженное с его текущим значением в рамках представленного набора данных формы. Успешный контроль должен быть определен внутри элемента FORM и должен иметь имя управления.

+0

Ух, такой глупый недосмотр. Я думал, что у меня есть они, но у меня только были id. Я боролся с этим часами! Большое спасибо. – Magnanimity

+0

Добро пожаловать! Вы также должны посмотреть на [Symfony forms] (http://symfony.com/doc/current/book/forms.html), чтобы сгенерировать этот код. – Brewal

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