管理用(admin)システム

Posted by muchag | CakePHP |
初回投稿:2011-05-20 (金) 14:27:22 | 最終更新:2011-05-28 (土) 16:18:51

CakePHP には
管理用のシステムを構築する基本機能が搭載されている。

【環境】
[CakePHP] 1.3.8
有効化

その機能を有効化するには

app ディレクトリ\config\core.php
  1. Configure::write('Routing.prefixes', array('admin'));

デフォルトではコメントアウトされているこの行を有効化する。

The CakePHP 1.3 Book:3.4.5.6 プレフィックスル-ティング(Prefix Routing)
 

利用法

この機能を利用するには

  • アクション名を admin_メソッド名 とする
  • ビュー名を admin_メソッド名.ctp とする

 

app ディレクトリ\controllers\hoge.php
  1. class HogesController extends AppController {
  2.  
  3.     var $name = 'Hoges';
  4.  
  5.     function admin_add() {
  6.  
  7.     }
  8.  
  9.     function admin_display($id) {
  10.  
  11.     }
  12. }

 

app ディレクトリ\views\admin_add.php
app ディレクトリ\views\admin_display.php

 
このように用意してやると
http://www.example.com/admin/hoges/add
http://www.example.com/admin/hoges/display/3
という URL になる。
 

意義

この機能を利用する意義は・・・
まだ分からない。

アドレスとして分かりやすいから?
 

ラッパー

専用ラッパーを設定できる。

まだ試していない からよくは分からないが
以下の手法は恐らく管理用に限ったものではなく
default 以外のラッパーを組み込む手法だと思われる。

app ディレクトリ\views\layouts\admin.ctp

を作成し

当該コントローラや app_controller.php 等に

  1. function beforeRender() {
  2.     if(defined('CAKE_ADMIN') && !empty($this->params['admin'])){
  3.         $this->layout = 'admin';
  4.     }
  5. }

このように設定してやれば専用ラッパーを利用できるようだ。
 
また、管理専用コントローラが存在するなら

  1. var $layout = 'admin';

のように指定してもよい。
 
参考元サイト:Shin x blog 管理者用アクション
 

パス
不具合

このシステムを利用すると

hoge_controller.php
  1. $imgPath = 'img/aiyo.png';
  2. $this->set('imgPath', $imgPath);
sample.ctp
  1. <img src="<?php echo $imgPath; ?>" />

このような手法で
今まで普通に表示されていた画像が表示されなくなる。
 

修正案

あれこれいじった結果

hoge_controller.php
  1. $imgPath = '/(webroot ディレクトリ名)/img/aiyo.png';
  2. $this->set('imgPath', $imgPath);

ならば表示されることが分かった。
 

原因探索

このシステムでは、一般ページのような
/コントロール名/アクション名
という URL ではなく
/admin/コントロール名/アクション名
になっているせいなのかしら。
 

落ち着き先

開発用と公開用のディレクトリ名の変更を考えると
上述のようにはしたくないので、結局

hoge_controller.php
  1. $imgPath = '/'.WEBROOT_DIR.'/img/aiyo.png';
  2. $this->set('imgPath', $imgPath);

なんていうパス設定になった。

ちなみに WEBROOT_DIR の前の ‘/’ がないと
画像は表示されない。

何か他に手がありそうなんだけどなぁ。

Posted by muchag | CakePHP |
初回投稿:2011-05-20 (金) 14:27:22 | 最終更新:2011-05-28 (土) 16:18:51

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment