Метод Flash () показывает сообщение, но не перенаправляет в CakePHP 2

В контроллере

public function add(){
$this->loadModel('User'); //load model
if($this->request->is('post')){
$filename=$this->User->checkFileUpload($this->request->data);
$this->User->set($this->request->data); //set data to model
if ($this->User->validates()){
$datas = array(
'User' => array(
'name' => $this->request->data['User']['name'],
'email'=>$this->request->data['User']['email'],
'password'=>$this->request->data['User']['password'],
'image'=>$filename
)
);
$pathToUpload=  WWW_ROOT . 'upload/';
move_uploaded_file($this->request->data['User']['image']['tmp_name'],$pathToUpload.$filename);
// prepare the model for adding a new entry
$this->User->create();
// save the data
if($this->User->save($datas)){
//$this->Session->setFlash('User Information has been saved!');
return $this->Flash('User Information has been saved!',array('action' => 'index'));
//return $this->redirect(array('action' => 'index'));
}
} else {
$errors = $this->User->validationErrors; //handle errors
}
}
//$this->layout = NULL;
$this->viewpPath='Users';
$this->render('add');
}

В приведенном выше коде я использовал метод flash (), чтобы направить пользователя на новую страницу после операции. Этот метод показывает сообщение, но не перенаправляет его по указанному URL.
Пожалуйста, помогите мне. Что я делаю не так здесь для перенаправления с помощью метода flash ()?

1

Решение

flash () не перенаправляет, он отображает. Она очень похожа на функцию render (), она продолжит выполнение скрипта, в отличие от функции redirect ().

но если вы все еще хотите использовать это

Вы должны использовать следующее в конфигурационном файле.

Configure::write('debug', 0);

Обновить
после добавления этого в main.php используйте как

$this->flash(__("Some message for the user here..."), array("action" => "index"));

это будет работать идеально. следить этот forrefrence

1

Другие решения

Render! = Redirect

Если вам нужно перенаправить на страницу реферера, вы можете использовать:

$this->redirect($this->referer());

если вы хотите перенаправить на другой контроллер:

$this->redirect(('controller' => 'YOURCONTROLLER', 'action' => 'YOURACTION'));

или если вы хотите перенаправить на другое действие в одном контроллере:

$this->redirect(('action' => 'YOURACTION'));
1

По вопросам рекламы [email protected]