2010-11-28 4 views
0

私はこのカスタムエラーハンドラを持っている:ErrorHanlderにjavascriptヘルパーをどのように組み込みますか?

`クラスAppErrorはErrorHandlerの{

関数error404($のparams){ ます$ this-> controller->レイアウト= 'パブリック' を拡張し、 $ this-> controller-> set( 'title'、 'ドロプタページが見つかりません'); parent :: error404($ params); }} `

そして、私はこれを持っている任意のレイアウトを使用するように見えることはできません。 $javascript->link('jquery',true)

だから、JSヘルパーがロードされていません。しかし、これをコントローラに含めると、var $helpers = array('javascript');はまだ動作しません。 App::import('Helper', 'javascript');

答えて

2

クラップ、私はあなたの質問を読んでいません。

ちょうどこの行を追加し、エラーコントローラにヘルパーを追加するには:

$this->controller->helpers = array('Javascript'); 

それを行うには、2つの方法があります。

まず、あなたは、すべてを含めるようにapp_controllerを作成することができますコンポーネントとヘルパーをすべてのコントローラに必要とします。

第2に、エラーコントローラに必要な特定のリソースをロードできます。あなたはまた、

$this->controller->set('title_for_layout', "We couldn't find what you are loooking for"); 

幸運でカスタムタイトルを設定することができ

<?php 
class AppError extends ErrorHandler { 
    function error404($params) { 
     $this->controller->helpers = array('Javascript'); 
     parent::error404($params); 
    } 
} 

:次のコードで、アプリケーションのルート(NOTウェブルート)にerror.phpという名前のファイルを作成します。

+0

ありがとう!これはうまくいきましたが、JavaScriptで追加するとHTMLを追加しなくてはなりませんでした。 – Justin

1

まず、404などの一般的なエラータイプを処理する場合は、独自のハンドラを作成する必要はありません。カスタムエラーハンドラはアプリケーション固有のエラーです。

404エラーが発生したときにページのレイアウトを変更する場合は、here以上の回答があります。

function beforeRender() { 
    if($this->name == 'CakeError') { 
     $this->layout = false; 
    } 
} 

そして、あなたがラインを使用して、それを引き起こす可能性があります:

$this->cakeError('error404'); 
+0

ありがとうございます。これを修正しました。しかし、どのようにJSヘルパーを含めるのですか? – Justin

+0

var $ helpers = array( 'Javascript');行に "javascript"の代わりに "Javascript"を使用してみてください。それが役に立ったら教えてください。 – RabidFire

関連する問題