passar valores de um controler para outro

pretendo que ao submeter um formulário a aplicação passe para outro formulário mas que passe o id do inserido no primeiro.

estou a fazer isto com sessão:

no modelo1Controler:


public function actionCreate()

	{....

if($model->save())				               

               $_id_criado = new CHttpSession;               

               $_id_criado->open();

               $_id_criado['id'] = $model->id;

               $this->redirect(array('modelo2/create'));

.....



no _form do modelo2


$_id_criado = new CHttpSession;

$_id_criado->open();

$_id = $_id_criado['id']; 

isto funciona bem!

o problema está que no form1 tenho algumas regras de validação (compos obrigatório p.e.) e se não os preencher, ao submeter, em vez de mostrar o formulário com os erros, simplesmente aparece-me uma página em branco :(

Página branca? Você está com display_error ligado? Talvez esteja dando algum erro no PHP que não está sendo exibido. Como é o código que chama a view ai dentro dessa action?

Você realmente precisa colocar isso na session? Não da pra passar esse id como parametro na url? Tipo




$this->redirect(array('modelo2/create', 'id_criado' => $model->id));



Caso REALMENTE precise usar session, não há necessidade de instanciar a classe CHttpSession. A instância de WebApplication já faz isso pra você e a deixa disponível por Yii::app()->session.

No seu caso, bastaria:




Yii::app()->session['id'] = $model->id;



ola davi_alexandre

obr pela resposta

realmente havia um erro e nao estava a mostrar … fui ver os erros do apache…




[07-Mar-2012 17:41:13 UTC] PHP Fatal error:  Call to a member function open() on a non-object in /home/testes/public_html/yii/protected/controllers/Modelo1Controller.php on line 75

a linha 75 é a $_id_criado->open();

estou a tentar fazer por sessão porqeu nao quero passar os parametros na url e buscar por $_GET tal como exemplificas na primeira parte da tua resposta… vou tentar a segunda.

afinal a solução foi muito mais fácil!!!!

faltavam {} a demimitar o código a ser executado no if($model->save()) …