2013-08-24 146 views
0

我目前正在寫一個應用程序作爲一個插件WordPress的,所以我需要一些非常規的解決方案..Yii的,我怎麼結束的Yii應用程序的執行沒有結束PHP腳本執行

目前我的問題是,當得到的Yii一個錯誤會在錯誤處理程序中拋出錯誤,然後退出PHP執行。難道不應該有一種方法讓Yii能夠讓它停止執行並讓外部代碼繼續運行嗎?

在我的情況下頁面的大部分一片空白,沒有WordPress的主題被加載。所以它變得相當哈克設計良好的錯誤頁面。 (如果一切正常的話,WordPress的負載Yii中的the_content();並將其與wordpress主題融爲一體)

任何想法?

回答

1

你可能要結束了重寫默認Yii的錯誤/異常處理程序放入自定義的處理程序。如果你看看我的有關文章integrating Yii/Wordpress,有一個厚望處理器超越的一個例子。適應你的使用,你應該沒問題。

調整網站/錯誤處理程序是不是要結束了爲你工作好,因爲這往往會拋出一個400錯誤標題,如果你呈現一個不同的頁面,你甚至不能停下來。在整合Yii和Wordpress的過程中遇到了困難,正如我先嚐試一樣。

讓我們知道,如果你得到它去,希望能有更好的示例代碼作爲一個插件melding Yii的。

+0

謝謝!這是我想要的! –

+0

@AlexanderKuzmin很高興聽到它;-) – acorncom

0

完Yii的,具有適當的清理和不退出請求。如http://www.yiiframework.com/doc/api/1.1/CApplication#end-detail所示,它是這樣完成的。

Yii::app()->end(0, false); 
+0

但不會太殺PHP執行? –

+0

正如我所想,這根本不起作用。 –

+0

@AlexanderKuzmin,用CApplication :: end(0,false)怎麼樣;?有關詳細信息,請參閱http://www.yiiframework.com/doc/api/1.1/CApplication#end-detail。 – kekkis

2

你有兩個選擇:

  1. 你要做try catch每一個位置,在那裏可以得到例外
  2. 處理錯誤,那麼一旦例外來了,它會重定向所有應用所需的美容錯誤頁面(與WordPress主題)

的Yii允許使用CONTRO ller行動來處理錯誤顯示工作。 要做到這一點,我們應該配置錯誤處理程序在應用 配置如下:

return array(
    ...... 
    'components'=>array(
     'errorHandler'=>array(
      'errorAction'=>'site/error', 
     ), 
    ), 
); 

在上面,我們配置CErrorHandler :: errorAction屬性 是路線網站/錯誤這是指在 SiteController的錯誤動作。如果需要,我們可能會使用不同的路線。

public function actionError() 
{ 
    if($error=Yii::app()->errorHandler->error) 
     $this->render('error', $error); 
} 

您有定製的路線,以及視圖的主題的能力,當你與WordPress工作

Yii handling error details

+0

第二個想法很不錯!謝謝! –