No es que sea muy recomendable pero si alguna vez neceistamos realizar un “redirect” desde dentro de un componente podemos utilizar el siguiente método de ejemplo.
$this->getController()->redirect(url_for('@ruta?foo=bar,true));
De ésta manera podemos abstraer la lógica de la gestión de un formulario antes y después del submit. Lo único que debemos asegurarnos es que el atributo action del tag form queda vacío, de ésta forma, siempre se ejecutará el código de validación del formulario en cualquier página. Aquí os dejo un ejemplo.
class componentsComponents extends sfComponents {
public function executeBuscador(sfWebRequest $request) {
$this->form = new form();
if ($request->isMethod('post')){
$params = $request->getParameter($this->form->getName());
$this->form->bind($params);
if ($this->form->isValid()){
$this->getController()->redirect(url_for('@url?foo=bar,true));
}
}
}
}
/**** HTML DEL COMPONENTE ***/
<form id="buscador" name="buscador" method="post" action="">
..
</form>
/************************/