基本的にdefault.ctpには、タイトルに次のものがあります。
<title>
<?= $this->fetch('title') ?>
</title>
そして、コントローラーの内部には次の行があります。
$this->set('title', 'Test-Title');
ただし、何も実行せず、コントローラー名(ジョブ、コントローラーのフルネームos JobsController.ctp)が表示されます。
しかし、これをビューファイル内に置くと:
$this->assign('title', 'Test-Title');
タイトルを変更します。では、$ this-> set( 'title'、$ title)の何が問題になっていますか?
コントローラの変数をset()
するだけです。
_// View or Controller
$this->set('title', 'Test-title');
_
次に、レイアウトまたはビューにある標準変数として使用します。
_<!-- Layout or View -->
<title>
<?php echo $title; ?>
</title>
_
詳細はこちら: http://book.cakephp.org/3.0/en/views.html#setting-view-variables
assign()
の使用は異なります。そのため、fetch()
で機能します。 assign()
はビューブロックで使用されます: http://book.cakephp.org/3.0/en/views.html#using-view-blocks
fetch()
は、変数ではなくブロックの内容を返します。コントローラでset()
を使用すると、変数をエコーすることでビューテンプレートに出力できる変数を設定できます。-
_<?php echo $title; ?>
_
fetch()
を使用する場合は、ビューテンプレートでassign()
と組み合わせて使用してブロックを定義する必要があります。たとえば、ビューテンプレートで次を使用します。-
_<?php $this->assign('title', $title); ?>
_
そして、レイアウトテンプレートで:-
_<title><?php echo $this->fetch('title'); ?></title>
_
CakePHP 3では、ページのレンダリングに関連するため、ビューでページタイトルを割り当てることでページタイトルを設定するという考え方があります。これは、コントローラーで_title_for_layout
_を定義し、レイアウトテンプレートで_$title_for_layout
_変数をエコーするCakePHP 2でこれが最初に処理された方法とは異なります(これは、CakePHP3アプローチを支持して非推奨になりました。 Cakeの新しいバージョン2)。
コードに固執したい場合は、「title」変数を設定した後、次のように記述します。
<?= __('Main Project Name') ?>
<?php if( isset($title)) $this->assign('title', $title); ?>
<?= ' - ' . $this->fetch('title') ?>
私はこれをdefault.ctp
でこのように行いました
<?php
$cakeDescription = __d('cake_dev', 'Your Title');
?>
<title>
<?php echo $cakeDescription ?>: <?php echo $title_for_layout; ?>
</title>
私のビューファイルでは、これを実行しました。
<?php $this->assign('title', 'Your Title');?>
完了のために、<head></head>
間で参照される未定義の変数を含む不正な形式の.jsスクリプトが<title></title>
タグをDOMに投稿するという状況に遭遇しました(ページソースに表示)がChrome、Firefoxおよび(メモリから)[〜#〜] msie [〜#〜]allタイトルのコンテンツをAPP UIに配信できませんでしたが、これもメモリから-iOS mobileは影響を受けませんでした。
CakePHP 3レイアウトテンプレートでは、タイトルを以下のように設定してください。
<title>
<?= $this->fetch('title') ?>
</title>
それからあなたの見解では:
<?php $this->assign('title', 'Title Name'); ?>
これは、CakePHPが組み込みのViewクラスを使用して、ページタイトル(ビューブロック)のレンダリングシナリオを処理する方法です。