スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
by MONOKo  at --:-- |  スポンサー広告 |   |   |  page top ↑

checkbox

おしゃれな書き方ではないのですが、とりあえずメモで。
<?php e($form->checkbox('CruiseReguser.question_1.0', array('value' => '1')));?>1
<?php e($form->checkbox('CruiseReguser.question_1.1', array('value' => '2')));?>2
<?php e($form->checkbox('CruiseReguser.question_1.2', array('value' => '3')));?>3
<?php e($form->checkbox('CruiseReguser.question_1.3', array('value' => '4')));?>4
スポンサーサイト
by MONOKo  at 12:19 |  未分類 |  comment (1)  |  trackback (0)  |  page top ↑

validate

$validate 配列の書き方
'項目' => array('規則名' => array('rule' => array('チェック関数名')))

'name' =>array(
	'rule' => array('maxLength', 8),
	'message' => '8文字を超えてます'
);

ユニークのチェック
'name' => array(
'require' => array('rule' => array('notEmpty'), 'required' => true),
'unique' => array('rule' => array('isUnique'), 'message'=>'同じ名前が存在しています')
),
requiredallowEmpty
未入力でもOK
'required' => true, 'allowEmpty' => true

未入力でもOK
'required' => false, 'allowEmpty' => true

未入力はNG
'required' => true, 'allowEmpty' => false
by MONOKo  at 17:44 |  validate |  comment (1)  |  trackback (0)  |  page top ↑

Text ヘルパー

Textヘルパーを利用するには、コントローラに、
public $helpers = array('html', 'text');
を追加します。

1.リンクの自動生成
テキストの中からURLやメアドを探しタグでくくってくれます。
$text->autoLink('テキスト', '属性設定')
2.リンクの削除
テキストの中からリンクを取り除きます。
$text->stripLinks('テキスト', '属性設定')
3.テキストから一部を抜粋する
長いテキストの中から特定の部分だけを抜粋します。
$text->excerpt('元のテキスト', '抜粋テキスト', 文字数)
4.テキストの一部をハイライト表示をする
テキストの一部にハイライト表示をします。
$text->highlight('テキスト', 'ハイライする部分')
by MONOKo  at 15:56 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

ACLComponentを使ってみる

前回のAuthComponentはユーザーがログイン中かしていないかでしたが、
ACLComponentはユーザーに応じて利用可能なページかどかを判定します。

1.設定ファイルの修正
[\app\config\core.php]

Configure::write('Acl.classname', 'DbAcl');
Configure::write('Acl.database', 'default');
//を削除します。

2.コマンドプロンプトの実行
・環境変数PATHの設定
> cd C:\xampp\php
> set path=%path;%cd%
> cd C:\xampp\htdocs\blog\cake\console
> set path=%path;%cd%
・スキーマの生成
> cd C:\xampp\htdocs\blog\app
> cake schema generate

> cake schema run create DbAcl

Are you sure you want to drop the table(s)? (y/n)
[n] > y

Are you sure you want to create the table(s)? (y/n)
[y] > y
[ACOS][AROS][AROS_ACOS]という3つのテーブルが作成されます。

3.ARO情報を作成します
AROは、ユーザを管理するものです。・管理(admin) すべての機能が使える・メンバー(member) 一般メンバー・ゲスト(guest) 閲覧メンバー
by MONOKo  at 17:39 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

JavaScript ヘルパー

Prototype JavaScript framework
script.aculo.us - web 2.0 javascript

script.aculo.us のライブラリには既に Prototype が含まれております。
「get it already!」の「Downloads page」をクリックします
「current version」の「scriptaculous-js-1.8.2.zip」をクリックしダウンロードします。

解凍をして「scriptaculous-js-1.8.2\scriptaculous-js-1.8.2\src」内の8つのファイルを
「app\webroot\js」に移動します。

/app
 └/webroot
    └/js
     ├builder.js
     ├controls.js
     ├dragdrop.js
     ├effects.js
     ├scriptaculous.js
     ├slider.js
     ├sound.js
     └/unittest.js

by MONOKo  at 16:28 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

ユニットテスト

SimpleTestは、PHPのためのユニットテストフレームワークです。

SimpleTest - Unit Testing for PHP

ここから「download」をクリックして「The current release is : SimpleTest v1.0.1.」をクリックして「simpletest_1.0.1.tar.gz」をダウンロードします。

by MONOKo  at 13:52 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

Sanitizeライブラリの利用

htmlspecialchars関数を仕様すると、すべてのタグが無効化されてしまします。
Sanitizeライブラリを使用して、問題となりうるタグだけを取り除きます。

App::import('Sanitize');
Sanitize::stripAll($resukt);
stripAll<script>, <style>, <img> および空白文字を削除します
stripScripts<script>, <style> タグを削除します
stripImages<img> タグを削除します
stripWhitespace空白(改行、タブ)を削除します
striptTags第二引数で指定したタグを削除します
by MONOKo  at 13:06 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

テーブル名は?

テーブル名など複数形で名前をつける規約があります
単数形を入力すると、複数形を表示してくれます。

CakePHP 規約ワードメーカー

便利です!
by MONOKo  at 13:48 |  models |  comment (0)  |  trackback (0)  |  page top ↑

バイト数チェック

validation.phpのmaxLengthとminLengthをみると
$length = strlen($check);
全角半角の文字数制限をする際には「mb_strlen関数」を使わないと・・
class AppModel extends Model
{
	function maxLengthJP($wordvalue, $length)
	{
		$value = array_shift($wordvalue);
		return(mb_strlen($value,mb_detect_encoding($value)) <= $length);
	}

	function minLengthJP($wordvalue, $length)
	{
		$value = array_shift($wordvalue);
		return(mb_strlen($value,mb_detect_encoding($value)) >= $length);
	}

}
参考サイト:独自のバリデーション関数を追加(日本語の文字数チェック)

by MONOKo  at 13:17 |  validate |  comment (0)  |  trackback (0)  |  page top ↑

AuthComponentを使ってみる

CakePHP1.2から提供されるようになった認証用のComponentです。
CREATE TABLE users (
	id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
	username VARCHAR(255) NOT NULL UNIQUE,
	password CHAR(40) NOT NULL,
	created DATETIME,
	modified DATETIME
);
users_controller.php
<?php
class UsersController extends AppController
{
	var $name = 'Users';
	var $components = array('Auth');

	function beforeFilter() {
		$this->Auth->loginError = "Login Error";
	}

	function login() {
	}

	function logout() {
		$this->redirect($this->Auth->logout());
	}
}
?>
app/views/users/login.ctp
<?php
if  ($session->check('Message.auth')) $session->flash('auth');
echo $form->create('User', array('action' => 'login'));
echo $form->input('username');
echo $form->input('password');
echo $form->end('Login');
?>
参考サイト:認証 :: 主要なコンポーネント :: マニュアル :: 1.2 Collection :: The Cookbook
by MONOKo  at 16:33 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

Paginator でページ送り

データの件数やページング処理を行ってみたいと思います。
$this->paginate = array(
	'limit' => 10,
	'order' => array('Model.created' => 'desc'),
);
$this->set('data', $this->paginate());

$this->paginate = array(
	'page' =>,	//初期状態で表示されるページ
	'conditions' =>,	//取得条件
	'fields' =>,	//取得するフィールド名
	'sort' =>,	//ソートキーとなるフィールド
	'limit' =>,	//表示する項目数
	'direction' =>,	//並び順
	'recursive' =>,	//再帰的に取得する震度
);

ページ総数や現在のページを表示する
views
$PaginatorHelper->countor(array('format' => '全 %pages% ページ中の %page% ページを表示しています。'))
表示
全 11 ページ中の 2 ページを表示しています。
%pages%総ページ数
%page%現在のページ
%current%現在のページに表示しているデータの件数
%count%データの総件数

ページ送り
views
$paginator->first("<< 先頭へ");
$paginator->prev("< 前へ", array(), null, array('class'=>'disabled'))

$paginator->next("次へ >", array(), null, array('class'=>'disabled'));
$paginator->last("最後へ >>");
by MONOKo  at 16:21 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

PEAR::Net_UserAgent_Mobileを使って携帯電話を判別してみよう

PEAR::Net_UserAgent_Mobileを使って携帯電話を判別をしてみたいと思います。

ダウンロード:PEAR :: Package :: Net_UserAgent_Mobile
ファイル名:Net_UserAgent_Mobile-1.0.0RC1.tar

ダウンロード:PEAR
ファイル名:PEAR-1.8.1.gz

PEAR Net_UserAgent_Mobile-1.0.0RC1.tarを解凍してUserAgentフォルダにUPします。
/app
 └vendors
    ├include_path.php  <- 新規作成
    ├PEAR.php
    ├PEAR5.php
    └/Net  <- 新規作成
      └/UserAgent  <- 新規作成
        ├/Mobile
        └Mobile.php

include_path.php
<?php
ini_set('include_path', dirname(__FILE__) . PATH_SEPARATOR . get_include_path());
?>

mobiles_controller.php

<?php
App::import('Vendor', 'include_path');
App::import('Vendor', 'Net/UserAgent/Mobile', array('file' => 'Net' . DS . 'UserAgent' . DS . 'Mobile.php'));

class MobilesController extends AppController
{
	var $name = 'Mobiles';
	var $uses = null;
	var $helpers = array('Mobile');

	function index() {
		$agent = &Net_UserAgent_Mobile::factory();
		switch(true){
			//DoCoMo
			case ($agent->isDoCoMo()):
			print "DoCoMo";
			break;

			//SoftBank
			case ($agent->isSoftBank()):
			print "SoftBank";
			break;

			//EzWeb
			case ($agent->isEZweb()):
			print "EzWeb";
			break;

			default:
			print "PC";
			break;
		}
	}
}
?>

出力時の文字コードをShift-JISへ変換します。
/app/views/helpers/mobile.php
<?php
class MobileHelper extends Helper
{
	function afterRender() {
		$out = ob_get_clean();
		$out = mb_convert_kana($out, "rak", "UTF-8");
		$out = mb_convert_encoding($out, "SJIS", "UTF-8");
		ob_start();
		echo $out;
	}
}
?>

docmo
getSerialNumber() ・・・ 端末製造番号(uid)の取得
getCardID() ・・・ FOMAカード製造番号の取得

参考サイト:Net_UserAgent_MobileをcakePHP1.2RC2で使う

by MONOKo  at 18:37 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

Stable1.2リリース

CakePHP 1.2 Finalがリリースされました
1月1日にリリースするのかなと思ってましたが。

ダウンロード
アドレス:http://cakephp.org/
ファイル:1[1].2.0.7962.zip (08/12/26)
by MONOKo  at 23:08 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

コンポーネントの作成

今回は、コンポーネント名は、「FileBehavior」とします。
自作のコンポーネントは/app/controllers/componentsにUPします。

file_behavior.php
<?php
class FileBehaviorComponent extends Object
{
var $controller = true;

//他のコンポーネントを利用する
var $components = array('Session');

function メソッド名 ( 引数 ){
//メソッドのロジックを記述します。

//モデルの読み込み
$model = & new Member();
$data = $model->findAll();
}
}
?>


コントローラに追加
作成した自作のコンポーネントをコントローラで使えるようにします。
var $components = array('FileBehavior');
$this->FileBehavior->メソッド名();


by MONOKo  at 17:41 |  component |  comment (0)  |  trackback (0)  |  page top ↑

アソシエーション

CREATE TABLE users(
	id int unsigned auto_increment primary key,
	name varchar(30) NOT NULL,
	created datetime default NULL,
	modified datetime default NULL
);

CREATE TABLE posts(
	id int unsigned auto_increment primary key,
	user_id int,
	comment text,
	created datetime default NULL,
	modified datetime default NULL
);
usersテーブルのみの場合のSQLは(条件なし)
SELECT `User`.`id`, `User`.`name`, `User`.`created`, `User`.`modified` FROM `users` AS `User` WHERE 1 = 1 

1対1のアソシエーション hasOne です。
user.php
<?php
class User extends AppModel
{
	public $name = 'Users';
	public $hasOne = array(
			'Posts' => array(
			'className' => 'Posts',
			'foreignKey' => 'user_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
		)
	);
}
?>
SQLは
SELECT `User`.`id`, `User`.`name`, `User`.`created`, `User`.`modified`,   `Posts`.`id`, `Posts`.`user_id`, `Posts`.`comment`, `Posts`.`created`,   `Posts`.`modified` FROM `users` AS `User` LEFT JOIN `posts` AS `Posts` ON   (`Posts`.`user_id` = `User`.`id`) WHERE 1 = 1 

1対多のアソシエーション hasMany です。
user.php
<?php
class User extends AppModel {
	var $name = 'User';
	var $hasMany = array(
			'Post' => array(
				'className' => 'Post',
				'foreignKey' => 'user_id',
				'dependent' => false,
				'conditions' => '',
				'fields' => '',
				'order' => '',
				'limit' => '',
				'offset' => '',
				'exclusive' => '',
				'finderQuery' => '',
				'counterQuery' => ''
			)
	);
}
?>
users_controller.php
$this->set('user_data', $this->User->find('all'));
by MONOKo  at 12:25 |  models |  comment (0)  |  trackback (0)  |  page top ↑

save()直後にIDを取得

save()直後にIDを取得をします。

$this->Post->create();
$this->Post->save($this->data);
$last_id = $this->Post->getLastInsertID()

by MONOKo  at 17:01 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

PEAR::Calendarを使ってカレンダーを作ろう

PEAR::Calendarを使ってとりあえず簡単なカレンダーを作りたいと思います。
参考サイト:creative@interactive » CakePHPとカレンダー表示(2)

ダウンロード
アドレス:PEAR :: Package :: Calendar
ファイル名:Calendar-0.5.4.tar

Calendar-0.5.4.tarを解凍してCalendarフォルダにUPします。
/app
 └vendors
    └PEAR  <- 新規作成
      ├include_path.php  <- 新規作成
      └Calendar

include_path.php
<?php
define('CALENDAR_ROOT', dirname(__FILE__). DIRECTORY_SEPARATOR.'PEAR'.DIRECTORY_SEPARATOR.'Calendar'.DIRECTORY_SEPARATOR);
?>

calendars_controller.php
<?php
App::import('Vendor', 'include_path');
App::import('Vendor', 'Calendar_Month_Weekdays', array('file'=>'PEAR'.DIRECTORY_SEPARATOR.'Calendar'.DIRECTORY_SEPARATOR.'Month'.DIRECTORY_SEPARATOR.'Weekdays.php'));

class CalendarsController extends AppController {

public $name = 'Calendars';

function index(){
$Month = new Calendar_Month_Weekdays( date('Y'), date('m'), 0 );
$Month->build();
$this->set('month', $Month);
}
}
?>

index.ctp
<?php
while ($Day = $month->fetch()) {
if ($Day->isFirst()) {
echo "<tr>\n";
}
if ($Day->isEmpty()) {
echo "<td> </td>\n";
}
else {
echo "<td>" . $Day->thisDay() . "</td>\n";
}
if ($Day->isLast()) {
echo "</tr>\n";
}
}
?>
by MONOKo  at 13:32 |  PEAR |  comment (0)  |  trackback (0)  |  page top ↑

GoogleMapを利用する

BakeryにGoogleMapの記事があったのですが、いまいちピンとこないので原始的な手口で・・・
[lng]と[lat]に緯度経度[address]に住所を入力します。

デーブルの作成
CREATE TABLE points (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
lng FLOAT,
lat FLOAT,
address TEXT,
created DATETIME NOT NULL,
modified DATETIME NOT NULL
);


points_controller.php
<?php
class PointsController extends AppController {

var $name = 'Points';
var $helpers = array('Html', 'Javascript');

function index($id = null){
$this->set('id', $id);
}

function getjson($id = null){
$this->layout = "ajax";
Configure::write("debug", 0);

$params = array(
'conditions' => array('Point.id' => $id)
);
$points = $this->Point->find('first', $params);

if(!empty($points['Point']['address'])){
$code = mb_detect_encoding($points['Point']['address']);
if($code != "UTF-8"){
$points['Point']['address'] = mb_convert_encoding($points['Point']['address'], 'UTF-8', $code);
}
}
$this->set("points" ,$points);
}

}
?>


index.ctp
<div id="map" style="width:400px; height:400px"></div>

<script type="text/javascript">
//<![CDATA[
if (GBrowserIsCompatible()) {
var zpoint = 16;
var map = new GMap2(document.getElementById("map"));

map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.disableDoubleClickZoom();
var geocoder = new GClientGeocoder();

GDownloadUrl("<?php echo $html->url('/points/getjson/'.$id)?>", function(data){
var points = eval("(" + data + ")");

if(points.Point.lat !=null && points.Point.lng !=null){
createMarker(new GLatLng(points.Point.lat, points.Point.lng));
}
else if(points.Point.address !=null){
var address = points.Point.address;
if(geocoder){
geocoder.getLatLng(address, createMarker);
}
}
});

function createMarker(point){
map.setCenter(point, zpoint);
var marker = new GMarker(point);
map.addOverlay(marker);
}
}
//]]>
</script>


getjson.ctp
<?php echo $javascript->object($points)?>

getjson.ctpの表示される内容は、
{"Point":{"id":"1","lng":"139.745","lat":"35.6586","address":null,"created":"2009-12-10 00:00:00","modified":"2009-12-10 00:00:00"}}

となります。
by MONOKo  at 18:20 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

DBを使わずにFormHelperを使用するときは

DBを使わない時はモデルに「var $useTable = false;」と記述すればよいが
FormHelperを使うと、DBに接続しに行ってしまいます。
のでモデルに

<?php
class Contact extends AppModel
{
var $useTable = false;
var $_schema = array('id' => array('type' => 'integer'));
}
?>


参考サイト
formヘルパーをテーブルなしモデルで使用するとエラーの回避方法CakePHP1.2b - CPA-LABテクニカル
by MONOKo  at 16:38 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

共通で使える変数

共通で使える変数を設定します。

[変数の書き込み] /app/config/bootstrap.php
Configure::write('prefectures', array(
1 => '北海道',
2 => '青森県',
3 => '岩手県',
4 => '宮城県',
));

[変数の読み込み]
$prefectures_data = Configure::read('prefectures');



by MONOKo  at 18:44 |  未分類 |  comment (0)  |  trackback (0)  |  page top ↑

ディレクトリ構造を変更する

ディレクトリをファイルシステムの別な場所に配置する方法です。

解凍後下記のように変更します。

cake_1.2.0.7692-rc3
 ├/cake     <- cakeディレクトリを作成して移動
 ├/docs
 ├/vendors
 ├.htaccess
 ├index.php
 └/app      <- cakeディレクトリに移動
   └/ webroot
       └/ webroot
           ├index.php  <- public_htmlフォルダに移動
           └.htaccess  <- public_htmlフォルダに移動

移動後
/public_html
 ├index.php
 └.htaccess
/cake
 ├/app
 ├/docs
 ├/vendors
 ├/cake
 ├.htaccess
 └index.php

/public_html/index.phpファイルの編集を致します
サーバは 「/home/user2/cake」 「/home/user2/public_html」
if (!defined('ROOT')) {
//define('ROOT', dirname(dirname(dirname(__FILE__))));
define('ROOT', DS. 'home' .DS. 'user2' .DS. 'cake');
}

if (!defined('APP_DIR')) {
//define('APP_DIR', basename(dirname(dirname(__FILE__))));
define('APP_DIR', 'app');
}

if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', ROOT);
}
by MONOKo  at 12:08 |  設定 |  comment (0)  |  trackback (0)  |  page top ↑

データベースを使わない

コントローラからモデルを使わない場合

<?php
class UsersController extends AppController {
var $uses = null;
}
?>
これによりモデルを使わないのでデータデースに接続されません。
モデル側の設定で使わない場合
<?php
class User extends Model {
var $useTable = false;
}
?>
by MONOKo  at 13:29 |  設定 |  comment (0)  |  trackback (0)  |  page top ↑

Model::find

とにかくよく使う「find」のまとめ

find($type, $params);

$type は 「all」, 「list」, 「first」, 「count」 のいずれかです。
$type = 'all';
$params = array(
	'conditions' => array('Model.field' => $thisValue), //条件
	'recursive' => -1, //int 検索の実行条件
	'fields' => array('Model.field1', 'Model.field2'), //カラム名
	'order' => 'Model.created', //順序
	'limit' => n, //int
	'page' => n //int
);

$data = $this->Model->find($type, $params);
by MONOKo  at 12:22 |  find |  comment (0)  |  trackback (0)  |  page top ↑

文字列チェック

UTF-8での文字列チェックを行います

app/config/core.php

全角カタカナ
define(
	'VALID_KATAKANA',
	'/^(?:\xE3\x82[\xA1-\xBF]|\xE3\x83[\x80-\xB6])+$/'
);
全角ひらがな
define(
	'VALID_HIRAGANA',
	'/^(?:\xE3\x81[\x81-\xBF]|\xE3\x82[\x80-\x93])+$/'
);
app_model.php
	static $error = array(
		'katakana' => '全角カタカナで入力して下さい',
		'hiragana' => '全角ひらがなで入力して下さい',
	);
	var $validate = array(
		'katakana' => array('rule' => VALID_KATAKANA, 'required' => true),
		'hiragana' => array('rule' => VALID_HIRAGANA, 'required' => true),
	);
by MONOKo  at 13:37 |  validate |  comment (0)  |  trackback (0)  |  page top ↑

FormHelper::select()

セレクトタグを出力します。

HtmlHelper::select(name, $data, null, null, array(''=>'--'));

Controller
$categories_data = $this->Category->find('list');
$this->set('categories_data', $categories_data);
views
$form->select(
	'category_id',
	$categories_data,
	null,
	array('multiple' => 'multiple'),
	array(''=>'--')
);
findで何も指定しないとカラムの1番目と2番目を表示します。
$params = array(
	'fields' => array('Category.id', 'Category.name'),
);
$categories_data = $this->Category->find('list', $params);
by MONOKo  at 14:00 |  Helper |  comment (0)  |  trackback (0)  |  page top ↑

FormHelper::dateTime()

日付のセレクトタグを出力します。
オプションの'monthNames' => falseで、月のセレクトタグが数値で表示されます。

$attr = array(
	'minYear' => 2006,
	'maxYear' => date('Y'),
	'separator' => ' / ',
	'monthNames' => false
);
$form->dateTime(
	'time_limit',
	'YMD',
	'NONE',
	date('Y-m-d'),
	$attr,
	false
);
by MONOKo  at 13:18 |  Helper |  comment (0)  |  trackback (0)  |  page top ↑

HtmlHelper::link()

リンクタグを出力します。

HtmlHelper::link(title, url, 要素の属性, 移動前の確認メッセージ);

$html->link(
	"削除",
	array('controller'=> 'categories', 'action'=>'delete', $id),
	array('class'=>'list'),
	"削除されますがよろしいですか?"
);

画像にリンク
$html->link(
	$html->image(
		'common02.gif',
		array('alt'=>'', 'border'=>'0')
	),
	'/business/',
	null,
	null,
	false
);

by MONOKo  at 13:16 |  Helper |  comment (0)  |  trackback (0)  |  page top ↑

FormHelper::create()

フォームタグを出力します。

FormHelper::create('モデル名' ,array());

<?php e($form->create('Contact', array('action'=>'entry', 'method'=>'post', 'name'=>'form1')))?>


by MONOKo  at 12:19 |  Helper |  comment (0)  |  trackback (0)  |  page top ↑

Model,View,Controllerをディレクトリに整理する方法

コントローはcontrollersデレクトリーにUPしますが、規模が大きくなるとファイル数が多くなってきます。
$controllerPathsを設定することで、「admins」「users」フォルダに分けることができます。

app/config/bootstrap.php

$controllerPaths = array(
ROOT.DS.APP_DIR.DS.'controllers'.DS.'admins'.DS,
ROOT.DS.APP_DIR.DS.'controllers'.DS.'users'.DS,
ROOT.DS.APP_DIR.DS.'controllers'.DS,
);

$viewPaths = array(
ROOT.DS.APP_DIR.DS.'views'.DS.'admins'.DS,
ROOT.DS.APP_DIR.DS.'views'.DS.'users'.DS,
ROOT.DS.APP_DIR.DS.'views'.DS,
);
by MONOKo  at 12:30 |  設定 |  comment (0)  |  trackback (0)  |  page top ↑

view::デフォルトのテンプレートの編集

cake/libs/view/layouts/default.ctp

app/views/layouts/default.ctp

にコピーし編集します。

<?php echo $content_for_layout; ?>
<?php echo $cakeDebug; ?>
ビューには、大きく分けて
・ビューテンプレート
・レイアウトがあります。
「レイアウト」を用意して、その中で「ビューテンプレート」を表示します。
public $autoLayout = fslse;
と記述するとレイアウト機能は使われなくなります。
public $autoRender = fslse;
と記述するとビュー機能は使われなくなります。
by MONOKo  at 12:28 |  設定 |  comment (0)  |  trackback (0)  |  page top ↑
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。