2010-04-23 115 views
0

我试图在登录和注册表单中加入相同的操作。这就是我想:Symfony:在同一页面中加入两个表单

模块/ miembros /的actions.class.php

public function executeAux(sfWebRequest $request) 
    { 
     // I execute this action 

    } 

模块/ miembros /模板/ auxSuccess.php

<?php include_component('sfGuardRegister', 'register'); ?> 
<?php include_component('sfGuardAuth', 'signin'); ?> 

模块/ miembros /组件。 class.php

public function executeSignin($request) 
{ 

    if ($request->isMethod('post') && ($request- 
>getParameter('submit')=='signin')){ 

    $this->form->bind($request->getParameter('login')); 
    if ($this->form->isValid()){ 
     $this->getController()->getActionStack()->getLastEntry()->getActionInstance()->redirect('@home'); 
    } 
    } 

} 

模块/ miembros /模板/ _signin.php

<form action="<?php echo url_for('miembros/aux?submit=signin') ?>" 
method="post"> 

     <?php echo $form['email_address']->renderLabel() ?> 
     <?php echo $form['email_address'] ?> 
... 

它工作正常,但我想知道你是否有其他的选择。例如,我不喜欢该行: $ this-> getController() - > getActionStack() - > getLastEntry() - > getActionInstance() - >重定向('@home');

问候

哈维

回答

1

你不应该在你的组件处理表单,你应该这样做在你的行动。这些组件意味着可以被包含在其他模板中的可重用视图(类似于partials,但是有一些代码支持它们以维持更复杂的数据检索)。如果您想在组件中显示表单以便重用它,您可以,但您应该在另一个操作中处理表单。

+0

我有一个基于您的意见的新建议。 – ziiweb 2010-04-23 16:56:27

1

感谢matei的评论这是我的新建议。你现在的意见是什么?

模块/ miembros /动作/的actions.class.php

public function executeAux(sfWebRequest $request) 
{ 
    return $this->renderPartial('aux'); 
} 

模块/ miembros /模板/ _aux.php

if(!isset($form_register)){ 

    $form_register = new sfGuardFormRegisterByOthers(); 
} 

include_partial('sfGuardRegister/register', array('form' => $form_register)); 


if(!isset($form_signin)){ 

    $form_signin = new sfGuardFormSigninByEmail(); 
} 

include_partial('sfGuardAuth/signin', array('form' => $form_signin)); 

模块/ sfGuardAuth /模板/ _signin

<form action="<?php echo url_for('sfGuardAuth/signin') ?>" method="post"> 

modules/miembros/sfGuardAuth/actions.class.php

if ($this->form->isValid()) 
{ 
    //... 

}else{ 

    return $this->renderPartial('miembros/aux', array('form_signin' => $this->form)); 

} 

它也有效。

Javi

+0

自从这篇文章已经很长时间了,但是爱尔兰有一个问题,我正在与symfony 1.4一起开发项目吗? 你能否向我解释一下如何渲染一个不包含模板的部分? – 2013-12-19 15:30:44

相关问题