Я использую форму входа на Symfony2 с помощью следующего кода контроллераКак получить значение формы в контроллере Symfony2
public function loginAction(Request $request)
{
$user = new SiteUser();
$form = $this->createForm(new LoginType(), $user);
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
$data = $form->getValues();
// Need to do something with the data here
}
return $this->render('GDSiteBundle::header.html.twig', array('form' => $form->createView()));
}
Но я получаю следующее предупреждение:
Предупреждения: array_replace_recursive() [function.array замены рекурсией]: Аргумент # 1 не является массивом в \ поставщика \ Symfony \ SRC \ Symfony \ Component \ Form \ form.php линия 593 500 Внутренняя ошибка сервера - ErrorException
Может кто-нибудь помочь мне понять, что неправильно, и как я могу это исправить? Благодарю.
Update: Файл веточка что-то вроде этого:
<div class="form">
{{ form_errors(form) }}
<form action="{{ path('site_user_login') }}" method="POST" {{ form_enctype(form) }}>
<div class="level1">
{{ form_row(form.username) }}
<a href="javascript:void(0)" id="inscription">{% trans %}Registration{% endtrans %}</a>
</div>
<div class="level2">
{{ form_row(form.pwd_hash) }}
<div class="forget_pass"><a href="#" id="frgt">{% trans %}Forgot Password ?{% endtrans %}</a></div>
</div>
<input type="submit" class="submit" name="login" value/>
<div class="clr"></div>
</form>
</div>
Вот функция в форме Тип
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('username', 'text', array('label' => 'Username : '));
$builder->add('pwd_hash','password', array('label' => 'Password : '));
}
Вот маршрут:
site_user_login:
pattern: /{_locale}/login
defaults: {_controller: GDSiteBundle:SiteUser:login}
Nice Answer - RE: ниже ответы. Symfony часто допускает множество способов получения аналогичных результатов. Всегда полезно исследовать «лучшие практики» при поиске решений SF. – JustinP
Для новых версий: $ data = $ form-> all(); – Gmajoulet