てくてくあるく

WordPress の テーマ とか プラグイン に ついて 勉強しています

Main Content

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/
に アクセスして ページが見られるようになりました!!


手探りで 勉強しているので 間違っていたら ご指摘いただけると助かります!!

管理ページで カスタム投稿タイプの デフォルトの並び順 を 変更する!!

詳細へ »

ACF ( Advanced Custom Fields ) の 有料 add-ons Repeater Field が すごく便利

詳細へ »

ACF ( Advanced Custom Fields ) が 便利だから みんなにも使ってもらいたい!!

詳細へ »