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/
に アクセスして ページが見られるようになりました!!
手探りで 勉強しているので 間違っていたら ご指摘いただけると助かります!!