[英]Sending AJAX Request from Controller back to View (CakePHP 2.0+)
[英]CakePHP 2.0+ custom error views using exceptions
我在這里一直在閱讀以下問題: CakePHP 2.0-如何制作自定義錯誤頁面?
關於在CakePHP 2.0+中為異常處理創建自定義視圖,並一直將其用作在我自己的應用程序中開始執行相同操作的基礎,因此引發了我自己的問題。
但是我沒有遵循邏輯。 例如,Throw NotFoundException如何知道如何在錯誤控制器中調用notFound方法,因為在命名方面我看不到任何直接關系...除非我遺漏了要點?
無論如何,我都希望添加404、403和401錯誤,然后能夠創建自定義視圖,並在整個應用中使用異常處理程序對其進行調用。
誰能對此給予更多的了解? 我正在使用最新版本的Cake 2.1
所以我有以下代碼:
App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {
public function notFound($error) {
$this->controller->redirect(array('controller' => 'errors', 'action' => 'error404'));
}
}
我想用呈現自定義錯誤視圖替換該重定向:
我試過了:
$this->controller->layout = null;
$this->controller->render('/Errors/error404');
但這只是顯示一個空白頁...有人可以幫我嗎,因為我不想執行重定向,而寧願遵循約定並在出現錯誤時使用相同的URL呈現實際視圖。
更新:還注意到自定義視圖僅在控制器中手動調用異常時才會調用,而不是針對諸如domain.com/garbageurl
或其他某些東西的實際錯誤...所以它似乎並沒有按照我的想法做!
看一下核心Cake的以下文件:
這是正在發生的事情:
ErrorHandler::handleException()
是您的異常處理程序 。 引發異常時調用它。 ErrorHandler::handleException()
調用ExceptionRenderer::__construct()
(您的自定義異常渲染器必須擴展ExceptionRenderer
),該解析器分析拋出的Exception的名稱,並由此設置$this->method
。 ErrorHandler::handleException()
調用ExceptionRenderer::render()
,后者使用call_user_func_array()來調用名稱為$this->method
。 我只是在尋找同樣的事情,但沒有找到一個巧妙的方法來做到這一點使用AppExceptionRenderer
。 它只是不允許您擁有單獨的error403和error404模板文件。
所以我只是在/app/View/Errors/error400.ctp
文件中執行了/app/View/Errors/error400.ctp
操作...
<? if ($error instanceof ForbiddenException) { ?>
<h4>Whoops! The page you attempted to access
requires permissions that you don't have.</h4>
<? } else { ?>
<h4>Whoops! We couldn't find the page you were looking for, sorry!</h4>
<? } ?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.