2010-04-23 4 views
0

로그인과 등록 양식과 동일한 작업에 참여하려고합니다. 이것은 내가 노력하고있어입니다 :Symfony : 같은 페이지에서 두 개의 양식을 결합하십시오.

모듈/miembros/actions.class.php/miembros/템플릿/auxSuccess.php

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

모듈/miembros/구성 요소

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

    } 

모듈. 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() -> redirect ('@home');

감사

하비는

답변

1

당신은 당신이 당신의 행동을해야, 구성 요소의 양식을 처리해서는 안된다. 구성 요소는 다른 템플릿에 포함될 수있는 재사용 가능한 뷰를 의미합니다 (부분 검색과 유사하지만보다 복잡한 데이터 검색을 유지하기 위해 일부 코드가 뒤에 있음). 구성 요소에 양식을 표시하여 재사용 할 수는 있지만 할 수는 있지만 다른 작업에서 양식을 처리해야합니다.

+0

귀하의 의견을 토대로 새로운 제안이 있습니다. – ziiweb

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/템플릿/

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

modules/miembros/sfGuardAuth/actions.class.php

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

}else{ 

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

} 

또한 작동합니다.

자비

+0

이 게시물 이후로 오랜 시간이 걸렸지 만, ireal은 심포니 1.4 프로젝트에서 작업하는 것이 궁금합니다. 부분을 렌더링하여 템플릿을 포함하지 않는 방법을 설명해 주시겠습니까? –

관련 문제