2012-10-04 32 views
0

我有一個以上的控制器(帖子,評論,分類......)進行交互的視圖在CakePHP的更改驗證錯誤重定向2.2

如果註釋不空的,它會去同樣的動作再次(註釋/加),但在這種情況下,我手動將用戶重定向到一個視圖像這樣的東西:

$this->redirect(array('controller' => 'posts', 'action' => 'view', $this->request->data['Comment']['posts_id'], '#' => $this->Comment->id)); 

的事情是,當他們嘗試後一個空的評論,例如,評論的驗證將它重定向到comments/add(這是表單動作的路由),但我不希望重定向執行此操作。我希望它回到原來的觀點,我不總得去改變它的控制器或模型上(據我所知)

有沒有辦法做到這一點?

謝謝。

回答

1

做到這一點,最簡單的方法就是讓你的形式通過AJAX提交。所以你不要在提交時刷新整個頁面 - 你只需要返回表格,並帶有錯誤(如果有的話)。

顯然,不會沒有的JavaScript的用戶。所以你可以不用擔心那些用戶,或者你可以做到這一點,所以你的評論控制器的添加方法使用你想要的視圖。事情是這樣的:

if ($this->request->is('ajax')) { 
    $this->render('/Elements/comment_form'); 
    return; // return the form only 
} else { 
    $this->render('/Posts/view'); // Your post view.ctp would have the comment form on it. 
} 

這裏就是我用那個方法的頁面的例子:http://www.lintonmeagher.com/contact嘗試提交的無數據形式的任何一個。

讓我知道你是否需要更多信息。