サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
やる気の出し方
cake.zista.jp
posted by MAX on Created: 2009-02-22 12:53:32 Modifyed: 2009-11-24 22:20:42 前回ACLの利用方法には「アクション・モード」と「CRUD・モード」の使い方があると説明しました。「アクション・モード」と「CRUD・モード」とはAuthコンポーネントの$authorizeプロパティを'actions'または'crud'のどちらにセットするかで決定します。 AuthコンポーネントがAclコンポーネントを「アクション・モード」と「CRUD・モード」それぞれの場合にどのように使ってパーミッションをチェックしているかを見て理解してみます。実際のパーミッションをチェック方法が分かるとACOに何を登録するのか、どのようにパーミッションを設定するのかが見えてきます。 Authコンポーネントは次のいずれかのコードでAclコンポーネン
若干トリッキーかも知れませんが、手っ取り早くパスワードをハッシュ化させないようにする方法です。その方法はAuthComponentのfields属性でパスワード・フィールドの名前を変更してしまう事です。AuthComponentはユーザー名とパスワードのフィールドが揃っているとパスワードの入力をハッシュ化します。 以下のコードではフォームに'password'という名前のフィールドがあっても暗号化されません。モデルでの検証を行う事が出来ます。さらに'password_confirm'というフィールドがあれば暗号化されますので、これを利用してモデル内でパスワードの入力確認を行います。 class UsersController extends AppController { function beforeFilter(){ parent::beforeFilter(); if($this
[今回のミッション(ゴール)] GmailのようなよくありがちなページングのフローをCakePHPで実現せよ。 1. 検索フォーム 2. 検索結果一覧(前後に移動できる) 3. 詳細表示(前後のレコードに移動できる) 4. 検索結果一覧に戻る(直前の詳細レコードを含む一覧ページ*) *1ページあたり最大5件を表示する一覧の場合、直前の詳細が5件目なら一覧の1ページ目に6件目なら一覧の2ページ目に戻る。 *検索フォームと検索結果一覧は同一ページ。 [実現するためのアイディア] CakePHPのページングの機能をできるだけ活用する。 検索フォームのポストをページングで使えるURL(名前付きパラメータ)に変換してリダイレクトする。 検索条件を詳細画面まで引き継ぐ(名前付きパラメータを持つURL) 詳細画面も最大1件のページングのページであると考える。 [却下されたもの]
CakePHPのACLが難しい。CakePHPに限らずACLそのものを理解していなかったのかも知れません。 CakePHPのマニュアルの5.1 アクセス制御リストや10.2 ACL を制御するシンプルなアプリケーションを読んだりしても今ひとつ理解出来ていない何かがありました。 マニュアルのACL部分以外にもAuthコンポーネント内にACLに関する記述があったのでAuthコンポーネントに関するマニュアルやAuthコンポーネントのソースを読んだりしました。AuthコンポーネントはACLのパーミッションをチェックする実例だったので、結局Authコンポーネントのソースを読んだ事がCakePHPのACLを理解を進める重要なポイントでした。ちなみにAuthコンポーネントはコントローラの各アクションの実行前に認証済みユーザーのACLパーミッションをチェックする機能を備えています。 Authコンポー
posted by MAX on 2008-06-05 15:46:31 updated on 2008-06-09 13:21:02 1.2betaにしたところ以下のエラーが表示された。 warning: realpath() [function.realpath]: SAFE MODE Restriction in effect. The script whose uid is 10xxx is not allowed to access /usr/local/lib/php owned by uid 0 in /virtual/username_xxx/cake_1.2/cake/libs/configure.php on line 458 PHPがセーフモードで動いているサーバー(Xreaとか)ではrealpathという関数を使えないのかと疑った。realpath関数自体は
1つのフィールドに対して複数の検証ルールを設定する事が出来ます。デフォルトでは全ての検証が実行され、複数の検証エラーがあったとしても、最後のエラーが出力されることになります。 下記のような検証ルールを設定していて何も入力がなかった場合には全ての検証ルールがエラーになり、3番目の「登録されています」というメッセージが出力されます。可能なら2番目のエラーを出力し、3番目の検証ルールは実行すらしなくて良いところです。 var $validate = array( 'username' =>array( 'custom'=>array( 'rule' => '/[\dA-Z_]/i', 'message' => '英数 と _ のみ使用出来ます。'), 'between'=>array( 'rule' => array('between',3,18), 'req
posted by MAX on Created: 2008-03-31 10:19:53 Modifyed: 2008-03-31 10:26:52 CakePHPのアソシエーションは便利で、hasOneとbelongsToを指定してあるものは自動的にテーブルをJOINしてデータを取得してくれます。 しかし、Aテーブル-belongsTo -Bテーブル-belongsTo -Cテーブルのようなテーブルのような構成の場合、AテーブルからCテーブルまでJOINしてデータをfindしようとして、いくらrecursiveのレベルを上げても出来ません。(JOINではなく新たなSQLが発行されます。) このような時は、'joins'パラメータが利用できます。 CakePHP 1.2では検索条件を引き数ではなく、配列1つにまとめて指定する事が出来ます。 $options['condit
posted by MAX on 2008-06-21 18:15:29 updated on 2008-06-21 18:20:52 1.2RC1の話。 検証ルールに'isUnique'を使って重複チェックができます。'isUnique'は正確には検証ルールではなくてモデルのメソッドですが、検証ルールのように使う事が出来ました。 var $validate = array( 'email'=>array( 'rule' => 'isUnique', 'message' => 'すでに登録されています'), ) ルール名の指定方法は、1. 定義済みルール 2. コールバック関数名 3.'custom' 4. 'userDefined'の中から指定出来ます。'isUnique'は定義済みルールではないので、2番目のコールバック関数名にあたります。 2.のコール
このページを最初にブックマークしてみませんか?
『cake.zista.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く