cakePHP 3 を 直接 触って 覚えてみることにした No.2
この記事は 2017年 2月 7日 に書かれた記事です。
cakePHP 3 で 開発するということは 管理画面を必要とするケースは 多いのかな と思います
ですので まずは 管理画面 を 表示 したいと思います
管理ページ ( admin ) の 作成
まずは ターミナルから 前回作成した ディレクトリ まで 移動します
cd my_app_name
cakePHP の bake を 使って 管理画面の 雛形を 作ります
その際に admin の 機能 を プラグイン として 切り分けて 管理していきたいと思います
bin/cake bake plugin Admin
コマンドを 叩くと 何回か確認項目が 出てきますが y で どんどん進めます
--------------------------------------------------------------- Plugin Name: Admin Plugin Directory: /Repository/my_app_name/plugins/Admin --------------------------------------------------------------- Look okay? (y/n/q) = ファイル作成 = File `/Repository/my_app_name/composer.json` exists Do you want to overwrite? (y/n/a/q) = ファイル作成 =
これで my_app_name/plugins/Admin/ 以下に 必要なファイルが 作成されました
まずは ルート設定 です
my_app_name/plugins/Admin/config/routes.php の 10行目あたりから 追記します
function (RouteBuilder $routes) { // ここから追加 $routes->connect( '/', [ 'controller' => 'Pages', 'action' => 'display', 'front_page' ] ); $routes->connect( '/pages/*', [ 'controller' => 'Pages', 'action' => 'display' ] ); //ここまで追加 $routes->fallbacks(DashedRoute::class); }
これで 固定ページを 表示出来るようになりました
my_app_name/plugins/Admin/src/Controller/PagesController.php を 新規作成します
<?php namespace Admin\Controller; use Cake\Core\Configure; use Cake\Network\Exception\ForbiddenException; use Cake\Network\Exception\NotFoundException; use Cake\View\Exception\MissingTemplateException; use Admin\Controller\AppController; class PagesController extends AppController { public function display() { $path = func_get_args(); $count = count( $path ); if( !$count ) { return $this->redirect( '/' ); } if( in_array( '..', $path, true ) || in_array( '.', $path, true ) ) { throw new ForbiddenException(); } $page = $subpage = null; if( !empty( $path[0] ) ) { $page = $path[0]; } if( !empty( $path[1] ) ) { $subpage = $path[1]; } $this->set( compact( 'page', 'subpage' ) ); try { $this->render( implode( '/', $path ) ); } catch( MissingTemplateException $e ) { if( Configure::read( 'debug' ) ) { throw $e; } throw new NotFoundException(); } } }
こちらは cakePHP 3 に 入ってる PagesController.php と ほぼ一緒です
my_app_name/plugins/Admin/src/Template/Pages/front_page.ctp を 新規作成します
<h1>text</h1>
とりあえず これで
http://localhost:8888/my_app_name/admin/
に アクセスして ページが見られるようになりました!!
手探りで 勉強しているので 間違っていたら ご指摘いただけると助かります!!