2014-01-29 3 views
1

Я ищу перенаправление после успешной отправки формы. Сохраните успешно с модели 1, затем используйте этот pk для fk в модели 2. Первоначально у меня были виджеты/компоненты. Но у меня растет количество этих виджетов, и я хотел бы искать другое решение.перенаправление на другой контроллер после получения pk

Я также пробовал $this->redirect(array('controller/action', 'id'=>$model->id));, но проблема заключается в том, что идентификатор отображается в URL-адресе. Мне тоже это не нравится.

Есть ли другой способ, кроме этих двух?

ответ

3

Как идея, вы можете использовать states в Yii. После сохранения модели и получить идентификатор вы можете действовать, как показано ниже:

//save done 
Yii::app()->user->setState('id',$THE_ID_YOU_WANT_TO_PASS); 
Yii::app()->request->redirect('YOUR DESTINATION'); 

Затем в пункт назначения, вы можете использовать идентификатор, установленное с помощью state

if(Yii::app()->user->hasState('id')){ 
$id=Yii::app()->user->getState('id'); 
} 

Другим решением является использование Yii-х Flash. Разница между state и flash заключается в том, что после одного использования вспышка будет пустой. Если вы хотите использовать свой идентификатор только один раз, это хорошее решение. Как state:

//save done 
Yii::app()->user->setFlash('id',$THE_ID_YOU_WANT_TO_PASS); 
Yii::app()->request->redirect('YOUR DESTINATION'); 

Тогда в пункт назначения, вы можете использовать идентификатор, установленное с помощью flash

if(Yii::app()->user->hasFlash('id')){ 
$id=Yii::app()->user->getFlash('id'); 
} 

Я надеюсь, что это будет полезно для вас.

+0

Спасибо за объяснение !! Работает хорошо!! – JamAndJammies

Смежные вопросы