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*

出力

実行すると、次の出力が表示されます。

共通ヘッダー