Во-первых, вы действительно не используете держатель параметра запроса для передачи переменных в ваш шаблон.Каждый шаблон будет передаваться по переменным, которые вы назначаете в контроллере.Ваше действие должно выглядеть следующим образом:
// $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