Не могу передать параметр в Symfony 1.0.17 - PullRequest
0 голосов
/ 10 апреля 2011

Заранее извиняюсь - любитель Symfony здесь с унаследованным проектом.

Я добавил следующее в apps / frontend / modules / top / templates / indexSuccess.php:

<?php echo form_tag('contents/'.$adv_data->getId()) ?>
<?php echo $sf_params->get('email'); ?>
<?php echo input_tag('email', $sf_params->get('email'))?>
<?php echo submit_tag('Next') ?>
</form>

Итак, я добавляю следующее в apps / frontend / modules / top / actions / actions.class.php в методе executeContents ():

$email = $this->getRequestParameter('email');
$this->getRequest()->setParameter('email', $email);
if (!$this->validateForm()) {
  $this->redirect($adv_id); // sends me back to the page with the form up above
}

Я ожидаю, что параметр электронной почты появится, ноувы это не так.
Параметр, ты не останешься?

1 Ответ

1 голос
/ 10 апреля 2011

Во-первых, вы действительно не используете держатель параметра запроса для передачи переменных в ваш шаблон.Каждый шаблон будет передаваться по переменным, которые вы назначаете в контроллере.Ваше действие должно выглядеть следующим образом:

// $this->email will be available in the template as $email
// or $sf_params->get('email')
$this->email = $this->getRequestParameter('email');

if (!$this->validateForm()) {
  // pass either module/controller and params or route name and params... 
  // just like link_to() helper function
  $this->redirect('@route_name?id='.$adv_id);

}

Однако вместо перенаправления вы, вероятно, захотите сделать это, вернувшись назад к действию, которое отображает форму, в противном случае ваши почтовые данные не будут перенесены: $this->forward('module', 'action');Причина этого в том, что redirect аналогичен выполнению header('Location: ...') - он создает совершенно новый запрос, с другой стороны, forward просто отправляет тот же запрос в другой модуль / действие, поэтому все параметры вашего запроса в $_GET и $_POST переносятся.Подробнее об этом можно прочитать в разделе Внутри уровня контроллера документации.

Теперь причина, по которой вы не видите переменную, заключается в том, что $sf_params соответствует держателю параметра шаблонов, а незапрос.Для получения держателя параметра запроса вы должны использовать $sf_request из шаблона.Подробнее об этом вы можете прочитать в подразделе Основы создания страницы: передача информации из действия в шаблон подраздел документации.

Вы можете найти полную документацию для 1.0 здесь: Полное руководство по Symfony

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...