テンプレート化はこちら
■フロントエンドとバックエンド(管理画面)の分離
一般的にフロントエンドとバックエンドはデザインが異なることが多いですし、機能的にも違ったものになります。そう考えると分離させるのはそれほど悪い考えでもないでしょう(であって欲しいw)
/admin/index.php は ./index.php をほぼコピーした感じです。
/admin/index.php
<?php define('EXT', '.php'); define('FCPATH', __FILE__); $pathinfo = pathinfo(FCPATH); define('SELF', $pathinfo['basename']); define('ROOT',realpath($pathinfo['dirname'].'/../').'/'); unset($pathinfo); define('SYSPATH', ROOT.'system/'); define('EXTPATH', ROOT.'extension/'); define('APPPATH', ROOT.'admin/application/'); $f=pathinfo(__FILE__, PATHINFO_BASENAME); if (!is_dir(SYSPATH)) exit("Your system folder path does not appear to be set correctly. Please open the following file and correct this: ".$f); if (!is_dir(APPPATH)) exit("Your application folder path does not appear to be set correctly. Please open the following file and correct this: ".$f); if (!is_dir(EXTPATH)) exit("Your extension folder path does not appear to be set correctly. Please open the following file and correct this: ".$f); define('ENVIRONMENT', 'development'); if (defined('ENVIRONMENT')) { switch (ENVIRONMENT) { case 'development': error_reporting(E_ALL); break; case 'testing': case 'production': error_reporting(0); break; default: exit('The application environment is not set correctly.'); } } require(SYSPATH.'core/Bootstrap'.EXT);
ここで問題になってしまったのがLayoutライブラリです。
./index.phpでTEMPATHを設定していたため$this->layout->view()が全てTEMPATHに向いてしまっていました。
そこで両方のindex.phpにADMIN定数を設定し、ADMIN=TRUEの場合にはTEMPATHに向かないように/extension/core/Layout.phpを変更しました。
(毎回コントローラで$this->layout->set('admin');とやるのは無駄ですからね…)
./indexphp
define('ENVIRONMENT', 'development')直前
define('ADMIN', FALSE);
/admin/indexphp
define('ENVIRONMENT', 'development')直前
define('ADMIN', TRUE);
/extension/core/Layout.php
18行目
if(! ADMIN) $load->set_view_path(TEMPATH.$template.'/');
■ コントローラの設定
admin/application/controllers/home.php
<?php class Home extends Controller { function index() { $this->layout->view('home'); } }
■ ビューの設定
admin/application/views/home.php
this is admin directory - <?php echo __FILE__; ?>
■ レイアウトの設定
admin/application/views/_layout/main.php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Admin Template</title> </head> <body> <?php echo $contents; ?> <p><br />Page rendered in {elapsed_time} seconds</p> </body> </html>
■ てすと
http://localhost/lsc/admin/ にアクセスしてみます。
ちゃんとアクセスできてます。大丈夫そうです。
無事に分けられたところで、次はアクセス制御かな?
0 件のコメント:
コメントを投稿