7月
11
2010
CakePHP – ACL再入門(2)
投稿者: admin, カテゴリ: CakePHP, tags: ACL, CakePHP投稿日: 2010.07.11 - 16:44
更新日: 2011.09.18 - 01:32
やっぱりACLは難しい。整理の意味も含めてもう一度入門しておく。(今回はCakePHP1.3.2です)
データベースの準備が整ったので、modelに進む。
スポンサードリンク
models/group.php
<?php
class Group extends AppModel {
var $name = 'Group';
var $actsAs = array('Acl' => array('requester'));
var $validate = array(
'name' => array(
'notempty' => array(
'rule' => 'notempty',
'message' => '必須項目です',
),
'unique' => array(
'rule' => 'isUnique',
'message' => 'すでに使用されています',
),
),
);
var $hasMany = array(
'User' => array(
'className' => 'User',
'foreignKey'=> 'group_id',
'conditions'=> '',
'fields' => '',
'order' => '',
'dependent' => true,
)
);
function parentNode() {
return null;
}
}
?>
models/user.php
<?php
class User extends AppModel {
var $name = 'User';
var $actsAs = array('Acl' => 'requester');
var $validate = array(
'username' => array(
'unique' => array(
'rule' => 'isUnique',
'message' => 'このユーザ名はすでに使用されています',
),
'alphaNumeric'=>array(
'rule' => array('custom', '/^[a-z][a-z0-9]{3,}$/'),
'message' => '半角英数[a-z][a-z0-9]で入力してください',
),
),
'password1' => array(
'notempty' => array(
'rule' => 'notEmpty',
'message' => '入力必須項目です',
),
'minLength' => array(
'rule' => array('minLength', 3),
'message' => '3文字以上である必要があります',
),
),
'group_id' => array('numeric')
);
var $belongsTo = array(
'Group' => array(
'className' => 'Group',
'foreignKey'=> 'group_id',
'conditions'=> null,
'fields' => null,
'order' => null,
),
);
function parentNode() {
if (!$this->id && empty($this->data)) {
return null;
}
$data = $this->data;
if (empty($this->data)) {
$data = $this->read();
}
if (!$data['User']['group_id']) {
return null;
} else {
return array('Group' => array('id' => $data['User']['group_id']));
}
}
function afterSave($created) {
if (!$created) {
$parent = $this->parentNode();
$parent = $this->node($parent);
$node = $this->node();
$aro = $node[0];
$aro['Aro']['parent_id'] = $parent[0]['Aro']['id'];
$this->Aro->save($aro);
}
}
}
?>
関連記事
- CakePHP – ACL再入門(6)
- CakePHP – ACL再入門(5)
- CakePHP – ACL(3)
- CakePHP – ACL再入門(8)
- CakePHP – ACL再入門(4)
- [CakePHP] 独自バリデーションルールにハマる
- CakePHP – ACL再入門(1)
スポンサードリンク
エントリ (RSS)