Teria como utilizar, em uma mesma create, dois forms ( um para a model e outro para uma outra pagina não-diretamente relacionada com a model )?
A minha duvida eh a seguinte:
Preciso de 2 formulários no create, um que redirecione para uma pagina especifica ( Ou seja, apenas um submit para uma pagina especifica, e nessa página teria outro submit para retornar para o _form ), e outro que salve os dados. Como no Yii geralmente eu só vejo um formulario na _form, e nas pesquisas q eu fiz sobre o assunto geralmente o pessoal trata 2 models ( uma para cada formulario. Não me interessa pois eu pretendo utilizar apenas 1 model, visto que o segundo formulario não seria para uma model), não sei como começar o código.
Vamos supor que você tenha feito o seu CRUD usando como fonte a tabela TesteA, sendo assim você terá uma controller chamada testeA e uma pasta para a view chamada testeA, dentro desta pasta crie sua página customizada, por exemplo _customPage.php, ela estará junto com a página _form.php gerada automaticamente pelo CRUD, em seguida siga os passoas abaixo:
1-) Em sua página customizada, no caso desse exemplo o arquivo _customPage.php, crie um formulário cuja ação será o ‘testeA/create’ e defina uma flag no botão submit para controlarmos a exibição das páginas na controller, por exemplo:
<?php echo CHtml::submitButton('Abrir Form Original', array('name'=>'customPage', 'value'=>'true')); ?>
2-) Altere sua controller, em nosso caso trata-se da TesteA.php para que quando seja acessada a ação create seu usuário seja redirecionado para sua página Customizada ou formulário Original
/**
* Creates a new model.
* If creation is successful, the browser will be redirected to the 'view' page.
*/
public function actionCreate() {
$model = new testeA;
// AO ACESSAR A AÇÃO CREATE VIA POST, VERIFICA SE A FLAG DE CONTROLE EXISTE
if(isset($_POST)){
// SE A FLAG DO BOTÃO SUBMIT EXISTE, EXIBE O FORMULÁRIO ORIGINAL
if(isset($_POST['customPage'])){
$this->render('_form.php',array('model'=>$model));
// AO RECEBER UM POST SEM FLAG SALVA OS DADOS DO FORMULÁRIO
} else {
$model->attributes=$_POST['testeA'];
$model->save();
$this->redirect(array('view','id'=>$model->id));
}
// AO ACESSAR PELA PRIMEIRA VEZ A AÇÃO CREATE VIA GET, EXIBE SUA PÁGINA CUSTOMIZADA
} else {
$this->render('_customPage.php',array('model'=>$model));
}
}