の設定はどのように行うのですかtitle_for_layoutデフォルトのPagesController?
-
26-09-2019 - |
質問
できませんセット title_for_layout
のPagesControllerるデフォルトとCakePHP1.3倍となっております。
私は、以下のコードの表示機能:
$this->set('title_for_layout','some title');
なぜですか?
解決
にコントローラに対応する値 $this->pageTitle
.
更新
マットとしてのコメントこれは1.2。1.3可能性(その研究を含む):
- を確保
$title_for_layout
が響く、レイアウト - を置いて
$this->set()
コードのビューではなく、コントローラー
他のヒント
あなたが模倣にケーキ1.2の動作を希望する場合は、以下の操作を行うことができます:
あなたのapp_controllerでは、次のメソッドを作成します:
アプリ/ app_controller.phpで中に(お持ちでない場合は、このファイルを作成する必要があります)。
public $pageTitle;
public function beforeRender() {
$this->set('title_for_layout', $this->pageTitle);
}
次に、あなたのアクションのいずれかの方法で、あなたは、あなたが1.2の場合と同じようPAGETITLEを使用することができます。
public function index() {
$this->pageTitle = 'Some Title';
}
beforeRender()メソッドは、このようなレイアウトのために設定された変数に、あなたにできるように、あなたのコントローラが完成し、処理をした後に呼び出されますが、レイアウトに先立ってレンダリングされます。
アクションメソッドでは、これを試してください
function index()
{
$this->pageTitle= 'Your Title';
}
ただ、あなたはコントローラ内部ではCakePHP 1.3で$this->set('title', $title);
を行うことができますが、私はこの解決策を見つける任意の新しい人々に追加しようと思いましたし、タイトルが自動的にレンダリングされます。
あなたが使用することができます:
$this->assign('title', 'Some title');
やCTPでます:
<title><?= $this->fetch('title'); ?></title>
これは、CakePHP 3.0で動作します。
CakePHPの3.xの、
あなたがここにアドバイスに従うことができますする
基本的には、
インサイドUsersController.php
ます:
$this->set('title', 'Login');
インサイドsrc/Template/Layouts/default.ctp
$this->fetch('title');
上記
書き込みます:
if (isset($title)) {
$this->assign('title', $title);
}
を使用する代わりにbeforeRender()
。 AppControllerの中で次のように入れます:
class AppController extends Controller {
var $content;
function beforeRender() {
$this->set('content',$this->content);
}
}
とコントローラで、あなただけ行うことができます:
function index() {
$this->content['title'] = '123'; }
これはトリックを行うだろう。