Cakephp-extending-views
提供:Dev Guides
CakePHP-ビューの拡張
多くの場合、Webページを作成している間、ページの特定の部分を他のページに繰り返したいと思います。 CakePHPには、ビューを別のビューに拡張できる機能があります。このため、コードを再度繰り返す必要はありません。 * extend()メソッドは、 *View ファイルのビューを拡張するために使用されます。 このメソッドは1つの引数、つまり、パス付きのビューファイルの名前を取ります。 ビューファイルの名前を提供するときに拡張子.ctpを使用しないでください。
例
次のプログラムに示すように、 config/routes.php ファイルに変更を加えます。
*config/routes.php*
<?php
use Cake\Core\Plugin;
use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;
Router::defaultRouteClass('DashedRoute');
Router::scope('/', function (RouteBuilder $routes) {
$routes->connect('extend',['controller'=>'Extends','action'=>'index']);
$routes->fallbacks('DashedRoute');
});
Plugin::routes();
*src/Controller/ExtendsController.php* に *ExtendsController.php* ファイルを作成します。 次のコードをコントローラーファイルにコピーします。
*src/Controller/ExtendsController.php*
<?php
namespace App\Controller;
use App\Controller\AppController;
class ExtendsController extends AppController{
public function index(){
}
}
?>
*src/Template* に *Extends* ディレクトリを作成し、そのフォルダーの下に *header.ctp* という *View* ファイルを作成します。 そのファイルに次のコードをコピーします。
*src/Template/Extends/header.ctp*
<div align = "center"><h1>Common Header</h1></div>
<?= $this->fetch('content') ?>
Extendsディレクトリの下に index.ctp という別の View を作成します。 そのファイルに次のコードをコピーします。 ここで、上記のビュー header.ctp を拡張しています。
*src/Template/Extends/index.ctp*
<?php $this->extend('header'); ?>
This is an example of extending view.
次のURLにアクセスして、上記の例を実行します。
*http://localhost:85/CakePHP/extend*
出力
実行すると、次の出力が表示されます。