Почему $ form ['_ csrf_token'] -> render ();сделать скрытый ввод без значения в Symfony 1.4.8? - PullRequest
0 голосов
/ 10 ноября 2010

Я использую symfony 1.4.8 и при попытке рендеринга скрытого поля формы csrf значение не добавляется в отображаемое поле. Я делал это раньше без проблем. Ниже приведены примеры, приведенные ниже, чтобы увидеть код и визуализированный вывод.

Код:

<?php echo $form['_csrf_token']->render(); ?>

Формирует:

<input type="hidden" name="contact[_csrf_token]" id="contact__csrf_token" />

Код:

<?php echo $form['_csrf_token']->renderRow(); ?>

Формирует:

<tr>
  <th><label for="contact__csrf_token"> csrf token</label></th>
  <td><input type="hidden" name="contact[_csrf_token]" value="3cf960d4553e2649f86d0ccd12a26efe" id="contact__csrf_token" /></td>
</tr>

Как видите, второй метод генерирует значение для csrf_token, но он также генерирует всю остальную информацию о строках. Предполагается, что метод render() просто генерирует «виджет» (в данном случае скрытое поле ввода) со значением. По какой-то причине это не добавляет значение.

Ответы [ 4 ]

1 голос
/ 10 ноября 2010

Зачем вам нужно явно сделать это?Почему вы не используете $form->renderHiddenFields()?

0 голосов
/ 20 сентября 2014

Хотя в Symfony есть много разных причин такого поведения:

  • Не используйте bind до проверки формы процесса.
  • Время сеанса истеклои нет идентификатора сеанса.
  • Проверка CSRF отключена или для нее не установлено значение csrf_secret в settings.yml file

Я представляю быстрое решение для прямой печати значения токена CSRF:

<input type="hidden" name="signin[_csrf_token]" id="signin__csrf_token" value="<?php echo $form->getCSRFToken(); ?>" />

Использование:

$form->getCSRFToken();

отобразит новый сгенерированный токен CSRF.

0 голосов
/ 10 ноября 2010

Вы должны сделать жесткое обновление.Что-то застряло в вашем сеансе.

Жесткое обновление - Shift + F5

Если это не удастся, удалите все файлы cookie своего домена для своего домена и повторите попытку.

Это простопроблема сеанса, если вы не перепутали csrf где-либо еще.

0 голосов
/ 10 ноября 2010

Используйте $form->renderHiddenFields() вместо.

...