2010-11-28 1 views
3

私は、コントローラで404ページへの呼び出しを持っている:それは私のカスタム404ページを使用しますが、タイトルを無視しカスタム404ページでページタイトルを設定するにはどうすればよいですか?

$this->set('title','Page Not Found'); 
$this->cakeError('error404'); 

。タイトルは「エラー」に設定されます。

どのように設定しますか?

public.ctp(私は空白の使用していない)

<?php header('Content-type: text/html; charset=UTF-8') ;?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <?php echo $html->charset('utf-8'); ?> 
    <title><?php echo $title_for_layout?></title> 

app_controller.phpで

function beforeRender() { 
    if($this->name == 'CakeError') { 
     $this->set('title_for_layout', 'Page Not Found'); 
     $this->layout = 'public'; 
    } 
} 

アクション

$this->pageTitle = 'Page Not Found'; 
$this->cakeError('error404'); 

答えて

3

I just answered this question in another topic

次のコードで、アプリケーションのルートでerror.phpを作成する必要があります:

<?php 
class AppError extends ErrorHandler { 
    function error404($params) { 
     $this->controller->set('title_for_layout', 'Your Title'); 
     parent::error404($params); 
    } 
} 
+0

これは機能しませんでした。タイトルは変更されていません。他のアイデア? – Justin

+1

ねえ、私はこれを仕事にしました!私のレイアウトは$ title_for_layoutをTITLEタグで使用していますが、あなたのコードのバグはtitle_for_layoutでなければなりません。あなたがあなたの答えを更新したら、私はそれを正しい印をつけて投票します。ありがとう! – Justin

+0

すべてをdownvoteする必要はありません。私には意味があるようです。少なくとも我々は努力している。 – metrobalderas

0

TESテッドこの、それが動作します:のAppController

レイアウト、blank.ctpで

function beforeRender(){ 
    if ($this->name == 'CakeError') { 
     $this->layout = 'blank'; 
     $this->set('title_for_layout', 'Page Not Found'); 
    } 
} 

、次のとおりです。

アクション

<title><?php echo $title_for_layout; ?> | Site Name</title> 

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

他のアイデアはありませんでしたか? – Justin

+0

私の答えを改訂しました。 – RabidFire

+0

うーん、まだ動作していません。 – Justin

0

はあなたのコードに問題がエラーが空をデフォルトということです

function beforeRender(){ 
    if ($this->name == 'CakeError') { 
     $this->layout = 'public'; 
     $this->set('title_for_layout', 'Page Not Found'); 
    } 
} 

これを試してみてくださいレイアウト。そのレイアウトを使用していない場合は、エラーレイアウトを指定する必要があります。上記の例では、RabidFireに空白のレイアウトを指定しています。代わりに使用するレイアウトを指定します - この場合はpublic.ctp/

+0

申し訳ありませんが、私は明らかにされている必要があります。私はコードを正しいレイアウトに更新して公開しました。正しいレイアウトにエラーページが表示されるので、動作していることを確認できます。私はページタイトルを設定できません。他のアイデア? – Justin

+0

私はあなたに何かを手伝って下さっているのですか?私たちの誰も悪いコードを投稿しました - 私は*文字通り*私が提供したものをテストし、それは働いた。あなたの将来の質問に答えさせる最善の方法ではないかもしれません。 –

関連する問題