ACLのデータベーステーブルの初期化
[text]./app/Console/cake schema create DbAcl[/text]
ACOデータの作成
[text]./app/Console/cake acl create aco root controllers[/text]
参考:
ACLのデータベーステーブルの初期化
[text]./app/Console/cake schema create DbAcl[/text]
ACOデータの作成
[text]./app/Console/cake acl create aco root controllers[/text]
参考:
http://kojika17.com/2011/01/web-designers-have-to-remember-license-summary.html
参考サイト
http://www.webopixel.net/cakephp/339.html
http://phptips.seesaa.net/article/107623702.html
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=331&forum=3&post_id=566
[php]
class DATABASE_CONFIG {
public $default = array(
‘datasource’ => ‘Database/Mysql’,
‘persistent’ => false,
‘host’ => ‘mysql〇〇○.db.sakura.ne.jp’, //データベース サーバ
‘login’ => ‘○○○’, //データベース ユーザ名
‘password’ => ‘○○○’, //接続パスワード
‘database’ => ‘○○○’, //データベース名
‘prefix’ => ”,
‘encoding’ => ‘utf8’,
);
[/php]
appがおいてある同じ階層に.htaccess
[text]
<IfModule mod_rewrite.c>
AddHandler x-httpd-php536 .php
suPHP_ConfigPath /usr/home/idaa1dddy/ama003/html/
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
[/text]
php.ini作成して、以下のように記述し、設定を反映させたいディレクトリにファイルを設置する。
コントロールパネルにログイン「お客様情報」タグをクリック。
「プログラムのパスとサーバの情報」→「PHP iniの設定情報」内容を全コピー
[text]mbstring.encoding_translation=off
mbstring.internal_encoding = utf-8[/text]
AテーブルとBテーブルが結合されており、BテーブルとCテーブルが結合されている状態で、AテーブルでCテーブルのデータを取りたい場合。
1.通常のアソシエーションを利用
Bテーブルを軸にし、beloggToでAテーブルとCテーブルのデータを取得する
2..joinを扱う
1対多 “他”のほうのテーブルに“1”側のIDを持たせる
class Recipe extends AppModel { public $name = 'Recipe'; public $hasAndBelongsToMany = array( 'Ingredient' => array( 'className' => 'Ingredient', 'joinTable' => 'ingredients_recipes', 'foreignKey' => 'recipe_id', 'associationForeignKey' => 'ingredient_id', 'unique' => true, 'conditions' => '', 'fields' => '', 'order' => '', 'limit' => '', 'offset' => '', 'finderQuery' => '', 'deleteQuery' => '', 'insertQuery' => '' ) ); }
className: 元モデルに関連付けられるモデルのクラス名。Recipe HABTM Ingredient を定義したい場合、’Ingredient’となります。
joinTable: このアソシエーションに使う中間テーブルの名前。テーブル名がHABTMテーブルの規約に従っていない場合に指定します。
with: joinするテーブルのモデル名を定義します。デフォルトではCakePHPはモデルを自動的に生成します。上記のサンプルでは、IngredientsRecipeです。このキーを使うことで、このデフォルトの名前を上書きすることができます。この名前のモデルクラスを生成することで、他の通常のモデルと同じようにたとえば追加の列や情報を取得するようにカスタム動作を定義できます。
foreignKey: アソシエーション先のモデルを検索するための外部キーの名前。これは複数のHABTMを定義するためによく使われます。このキーのデフォルト値はアソシエーション先のモデルの単数形に _id がついたものです。
associationForeignKey: アソシエーション先のもう一方のモデルを検索するための外部キーの名前。これは複数のHABTMを定義するためによく使われます。このキーのデフォルト値はアソシエーション先のモデルの単数形に _id がついたものです。
unique: bool値、または文字列で keepExisting を指定します。
trueを指定すれば(これがデフォルトです)、新しいレコードを挿入する前に既存の関連するレコードを削除します。
falseを指定すれば、saveを実行してレコードを挿入したあとに、joinできないレコードがあれば削除されます。
keepExisting を指定すれば、 true を指定した時と似ていますが、既存の関連レコードは削除されません。
conditions: find()に指定するconditionsと互換性のある配列もしくはSQL文字列を指定します。アソシエーション先のテーブルに条件を指定したければ、’with’ に指定したモデルを使って必要なbelongsToアソシエーションを定義してください。
fields: アソシエーション先のモデルから取得するフィールドのリスト。デフォルトで全フィールドが含まれます。
order: find()に指定するorderと互換性のある配列もしくはSQL文字列を指定します。
limit: アソシエーションモデルのデータの最大行数。
offset: アソシエーションモデルのデータをスキップする行数。
finderQuery, deleteQuery, insertQuery: データ取得、削除、追加の時に使われるSQLクエリを指定します。これは、動作をカスタマイズしたい時に使います。
参考
http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html
http://www.webopixel.net/cakephp/259.html
http://oshiete.goo.ne.jp/qa/6906994.html
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN”>
<html lang=”ja”>
<head><title>sample</title>
<meta http-equiv=”Content-Script-Type” content=”text/javascript”>
<script type=”text/javascript”>
<!–
function hoge(evt){
//それぞれのグループのチェック許容数最大値
var limit ={ “group1”:1, “group2”:2, “group3″:3 };
var t = evt.target || evt.srcElement;
var cnt=0, p = t.parentNode;
var elm, e, i, max;
if(t.nodeName!=”INPUT” || t.type!=”checkbox” ||
!t.checked || !(max=limit[p.id])) return;
elm = p.getElementsByTagName(“input”);
for(i=0; e=elm[i++];)
if(e.type==”checkbox” && e.checked) cnt++;
if(cnt>max){
t.checked = false;
alert(“チェックは” + max + “個まで”);
}
}
//–>
</script>
</head>
<body>
<form action=”#” onClick=”hoge(event)”>
<fieldset id=”group1″>
<legend>group1</legend>
<input type=”checkbox” value=”0″ name=”a_1″ checked>a_1
<input type=”checkbox” value=”1″ name=”a_2″>a_2
<input type=”checkbox” value=”2″ name=”a_3″>a_3
<input type=”checkbox” value=”3″ name=”a_4″>a_4
</fieldset>
<fieldset id=”group2″>
<legend>group2</legend>
<input type=”checkbox” value=”0″ name=”b_1″ checked>b_1
<input type=”checkbox” value=”1″ name=”b_2″>b_2
<input type=”checkbox” value=”2″ name=”b_3″>b_3
<input type=”checkbox” value=”3″ name=”b_4″>b_4
</fieldset>
<fieldset id=”group3″>
<legend>group3</legend>
<input type=”checkbox” value=”0″ name=”c_1″ checked>c_1
<input type=”checkbox” value=”1″ name=”c_2″>c_2
<input type=”checkbox” value=”2″ name=”c_3″>c_3
<input type=”checkbox” value=”3″ name=”c_4″>c_4
</fieldset>
</form>
</body>
</html>
<その2>
<html>
<head>
<script language=”javascript” type=”text/javascript”>
function autochk(p,name){
var f = p.form;
var el;
for(var prop in f){
if(prop.toString().substr(0,2)==name){//名前がname(‘ko’)で始まるもの
el=f.elements[prop];
if(el.type==”checkbox”){//このチェックは省略してもいいかも
el.disabled = !p.checked;
}
}
}
}
</script>
</head>
<body>
<form id=”query” name=”query”>
<input type=”checkbox” name=”oya” value=”1″ checked checked onclick=”autochk(this,’ko’);”>親
<input type=”checkbox” name=”ko1″ id=”ko1″ value=”1″ checked>子1
<input type=”checkbox” name=”ko2″ id=”ko2″ value=”1″ checked>子2
<input type=”checkbox” name=”ko3″ id=”ko3″ value=”1″ checked>子3
<input type=”checkbox” name=”ko4″ id=”ko4″ value=”1″ checked>子4
<input type=”text” name=”other” value=”その他”>
</form>
</body>
</html>
<その2>
<html>
<head>
<script language=”javascript” type=”text/javascript”>
function autochk(f){
for(var i=0;i<f.form.length;i++){
if (f.form.elements[i].className==”ko”){f.form.elements[i].disabled = !f.checked;}
}
}
</script>
</head>
<body>
<form>
<input type=”checkbox” name=”oya” value=”1″ checked onclick=”autochk(this);”>親
<input type=”checkbox” name=”ko1″ value=”1″ checked>子1
<input type=”checkbox” name=”ko2″ value=”1″ checked>子2
<input type=”checkbox” name=”ko3″ value=”1″ checked>子3
<input type=”checkbox” name=”ko4″ value=”1″ checked>子4
<input type=”checkbox” name=”other” value=”1″ checked>他
</form>
</body>
</html>
一つの証明書にて、指定されたドメイン名に属している全てのサブドメインが有効に機能します
http://d.hatena.ne.jp/keyword/%A5%EF%A5%A4%A5%EB%A5%C9%A5%AB%A1%BC%A5%C9%BE%DA%CC%C0%BD%F1
http://d.hatena.ne.jp/hiromi2424/20100204/1265274976
<?php class Profile extends AppModel { var $name = 'Profile'; var $belongsTo = array( 'User' => array( 'className' => 'User', 'foreignKey' => 'user_id' ) ); } ?>
belongsTo 関連の配列で有効なキーは以下のようになります:
class User extends AppModel { var $name = 'User'; var $hasOne = array( 'Profile' => array( 'className' => 'Profile', 'conditions' => array('Profile.published' => '1'), 'dependent' => true ) );
CakePHP のセッション (Session) コンポーネントは、複数のページにわたってクライアントのデータを継続して保持する方法を提供します。http://book.cakephp.org/2.0/ja/core-libraries/components/sessions.html
http://1-byte.jp/2011/03/09/10_things_you_must_know_about_cakephp/
http://yakinikunotare.boo.jp/orebase2/cakephp/view
http://cakephp.jp/modules/newbb/
http://www.1×1.jp/blog/2006/08/cakephp_viewhelper.html
http://c-brains.jp/blog/wsg/10/05/24-173034.php
CakePHP Viewの基本
http://dwi.blog101.fc2.com/blog-entry-13.html
http://www.la-nouveau.mydns.jp/wordpress/?p=1302
xdebug
モデルの記述
//——————————————————————————–
// 初期データ取得
//——————————————————————————–
function getIni() {
$data = array();
return $data;
}