to na pewno głupie pytanie, ale dzień się już kończy, głowa mnie boli…
Jak ustawić returnUrl
public function actionDelete($id)
{
if(Yii::app()->request->isPostRequest)
{
// we only allow deletion via POST request
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
else
throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}
Innymi słowy, chcę wykonać jakąś akcję - w tym przypadku delete - i wrócić do zdefiniowanego przeze mnie URL’a. Potrzebuję to definiować dla łącza (widok), nie dla sesji czy kontrolera.
Mnie będzie bolała głowa dopiero jutro rano, więc nie jeste, pewny czy dobrze rozumiem pytanie:). Czy chcesz po kliknięciu w link przenieść się na jakąś z góry zdefiniowaną stronę, czy też strona na którą zostaniesz przekierowany zależy od linku w który klinkiesz?
Jeżeli pierwsze, to w kontrolerze sprawdzasz, czy istnieje w tablicy $_POST indeks returnUrl. Jeżeli nie, to ustawiasz jakiś swój na który masz być przekierowany po każdym usunięciu.
Jeżeli drugie to musisz po prostu przekazać w linku dodatkową zmienną:
Hmm… to drugie, a konkretniej będąc w widoku tematu/wątku "forumTopic/view/id/X" - klikam w link, który ma skasować wybrany post w tym temacie "forumPost/delete/id/Y" po skasowaniu tego posta chcę wrócić do widoku tematu.
Można też inaczej. Przed skasowaniem wątku z bazy pobieramy id wątku do którego ten post jest przypisany i wtedy po skasowaniu posta generujemy odpowiednie przekierowanie:
OT! Tuż przed pierwszą w nocy piszesz, że będzie Cię bolała głowa, a już po szóstej rano piszesz “dobra, teraz na trzeźwo”? :] Masz świetny łeb i mega krótkie kace!