サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
www.garacter.com
Treeビヘイビアを使う準備 Treeビヘイビアを使う ノードの追加/編集/削除 主なメソッド その他のメソッド トップレベルのノードを扱う時の注意 パスからノードを特定する 木構造のような階層構造を扱うためのビヘイビア。入れ子集合モデルにparent_idを加えた仕組みになっています。(parent_idを加える事でデータは若干冗長になります) 入れ子集合モデルについてはSQLで木と階層構造のデータを扱う(1)―― 入れ子集合モデルで詳しい解説を読む事が出来ます。 Treeビヘイビアを使う準備 Treeビヘイビアを使用するには使用するテーブルに指定のフィールドが存在している必要があります。 id parent_id lft rght lftやrghtフィールドはビヘイビアが面倒を見てくれますので意識する必要はほとんどありません。 CREATE TABLE categories ( id
Garacter login ノート API cakephp-1.3 A AclBase AclBehavior AclComponent AclNode AclShell Aco AcoAction AjaxHelper ApcEngine ApiShell App AppController AppHelper AppModel Aro AuthComponent B BakeShell BakeTask BehaviorCollection C Cache CacheEngine CacheHelper CakeErrorController CakeLog CakeRoute CakeSchema CakeSession CakeSocket ClassRegistry Component Configure ConnectionManager ConsoleShell Conta
開発 (丸ごとインストールするだけの方法) ローカルのマシンでの開発など簡単に利用出来る方法です。レンタルサーバー等でWebサーバーのドキュメント・ルートが固定されていて変更出来ない場合などもこちらの方法でインストールします。 Webサーバーの公開ディレクトリの任意の場所にCakePHPを丸ごとコピーします。以下の例は、Webサーバーのドキュメント・ルートが'/var/www/html'、ダウンロードしたCakePHPのファイルを解凍して、'cake_1_3'のような名前にした場合の例です。 /var/www/html cake_1_3 .htaccess app cake index.php plugins vendors 次のようなURLでアクセスできます。 http://www.mydomain.com/cake_1_3/ 運用 (ドキュメント・ルートの設定を行う例) CakePHP
強力なinput()メソッド 部品タイプの自動判別 出力する内容 $optionsで指定できる内容 参考 強力なinput()メソッド formヘルパーはinput()メソッド1つで様々なフォームの部品を自動判別して出力する事が出来ます。select()やtextarea()といったメソッドも用意されていますが、input()メソッド1つで柔軟に対応できます。 $this->form->input($fieldName, $options=array()) echo $this->form->create('Post'); echo $this->form->input('title'); //type='text' echo $this->form->input('body'); //textarea echo $this->form->input('category_id'); //s
コントローラ ビュー Group Byを使用する場合 検索結果を複数のページにわたって表示させたいときは、ページネーション機能を使います。ページ送り、ページングなどと呼ばれる機能です。コントローラーのpaginateメソッドとビューのpaginatorヘルパーを使います。 コントローラ モデルにfindメソッドを使う代わりに、コントローラのpaginateメソッドを使います。 PostsControllerの例。 $posts = $this->paginate('Post'); $this->set('posts', $posts); コントローラの$paginate属性に検索対象のモデル、検索条件等のオプション・パラメータを指定する事ができます。このパラメーターはモデルのfind('all')と同様のconditions, fields, order, limit, page, con
テキストで指定する 配列で条件を組み立てる 演算子 検索条件は、テキストまたは配列で指定します。カラム名はテーブルが結合されるケースを想定して'Post.title'のように'モデル名.カラム名'とするのが良いです。 テキストで指定する $option['conditions'] = "Post.title = 'cake' "; $this->Post->find('all',$option); 配列で条件を組み立てる 検索条件の基本はカラム名をキーにした配列を作っていきます。 $option['conditions'] = array('Post.title' =>'cake'); $this->Post->find('all',$option); 演算子 <>, LIKE, BETWEEN, REGEXなどの演算子をカラム名の後に置いて使用できます。 array("Post.titl
レコード追加(insert)とレコード更新(update) saveメソッドの詳細 トピック 同種のメソッド データの保存にはモデルのsaveメソッドを使用します。レコード追加(insert)とレコード更新(update)のどちらの場合もsaveメソッドを使用します。複数のレコードあるいは関連モデルのデータを同時に保存する場合にはsaveAllメソッドを利用します。 レコード追加(insert)とレコード更新(update) saveメソッドがレコード追加(insert)とレコード更新(update)のどちらを行うかは、モデルにプライマリー・キーの値を指定しているかどうかでによります。プライマリー・キーの値が指定されていて該当レコードが存在すればレコードを更新し、該当レコードがないかプライマリー・キーが指定されていなければレコードを追加します。 コントローラに記述するデータ保存の一般的なコ
Bakeを使う 新しくアプリケーションを追加する コマンドラインからBakeを使用して、アプリケーションに必要なコードを生成する事が出来ます。データベースにテーブルを作成しておけば、Bakeを使ってデータベース設定、モデル、ビュー、コントローラのファイルを生成する事が出来ます。 Bakeを使う ディレクトリに移動し、'cake bake'を実行します。 $ cd /path-to-cake/cake/console/ $ cake bake Bakeを実行すると以下の例のように対話的な画面になり、やり取りを続けてゆくとコードが生成されます。 Welcome to CakePHP v1.3.x Console --------------------------------------------------------------- App : garacter.com Path: /pa
フォームの作成 フォームの部品 フォームの完結 API for CakePHP 1.3:FormHelper フォームとフォームの部品を出力するためのヘルパー。inputメソッドは様々な部品を出力出来ます。 フォームの作成 echo $this->Form->create ($model=null, $options=array()) フォームの開始タグを出力。引数を全く指定しなければ、現在のコントローラーとアクション名からフォームタグのパラメーターが設定されます。 Usersコントローラのaddアクションのviewファイルでcreate()を使った時 echo $this->Form->create(); 以下のようなフォームでidやactionのパラメータが自動的に設定されます。 <form id="UserAddForm" method="post" action="/users/a
デフォルトのルーティング アクション以降が省略されている時のマッピング 設定済みのルーティング ルーティングの指定方法 クライアントがリクエストするURLに対してアプリケーション内のコンントローラとアクションを実行させるかを特定するためにRouterクラスを用いて設定します。通常app/config/routes.phpファイルで設定します。 デフォルトのルーティング 基本的なルーティングです。 http://www.mydomain.com/myController/myAction/param1/param2/param3 これは、myControllerコントローラーのmyActionアクションを実行します。アクション以降のURLはパラメーターとしてアクションに渡されます。 http://www.mydomain.com/users/view/param1/param2/param3
今回は、ユーザー名とパスワードの代わりにユーザーを特定するキー(パスポートと呼びます)をクッキーとデータベースに記録します。ログインしていないユーザーがパスポートを持っていればデータベースからユーザーを特定し、自動でログインさせます。この例では、Authコンポーネントが使うセッションの有効期限とパスポートが使うクッキーの有効期限が異なります。 データベースにPassportsテーブルを作成します。 CREATE TABLE `passports` ( `id` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL default '0', `passport` varchar(60) NOT NULL default '', `updated` datetime NULL , PRIMARY KEY (`id`) ) モデル
自動ログイン機能とは 自動ログインの仕組み 実装 ブラウザを閉じた後でも自動的にログインできるようにログイン・フォームに「次回から自動的にログイン」「次回からログインを省略」「Remember me」などのチェックボックスが備わっているケースを良く見かけます。AuthComponentとCookieComponentを使って実装してみます。AuthComponentのページで説明した例の続きとして説明いたします。 その1では、Authenticationにある方法を紹介します。 自動ログイン機能とは 自動ログイン機能とは、ログインが必要なページにもユーザー名やパスワードの入力なしでアクセスできる便利な機能です。ログイン時に「次回から自動的にログイン」にチェックしてログインすると自動ログインが有効になります。クッキーが使えるブラウザのみ対応。 自動ログインの仕組み 「次回から自動的にログイン
検索のタイプ オプションの指定 findByフィールド名 レコードの検索はfindメソッドを使用します。findメソッドでは検索のタイプを指定し、必要に応じてオプションを指定します。 find(string $type, array $options) 検索のタイプ 検索のタイプは以下のいずれかを指定できます。 all(全てのレコード) first(最初のレコード) count(レコード数) list(リスト表示用の配列を取得) neighbors(前後のレコード) threaded(親子関係のレコード、ツリー状にネストされた配列を取得できる) オプションの指定 オプションとして以下の項目を指定できます。 検索条件(conditions) ソート順(order) 取得するフィールド(fields) 結合(joins) グループ化(group) 取得上限(limit) アソシエーションの指定
Garacter login ノート API © Garacter.com
test _ 1 イントロダクション _ 1-1 マニュアル _ 1-2 コミュニティ _ 1-3 チュートリアル _ 1-4 オープンソース _ 2 ファイル構成 _ 3 CakePHPの構造 _ 3-1 動作条件 _ 3-2 命名規則 _ 4 URL書き換え _ 5 インストール _ 6 初期設定 _ 6-1 URLマッピング _ 6-2 各種クラスやファイルの読み込み _ 6-3 データベース設定 _ 7 MVC(モデル・ビュー・コントローラ) _ 8 コントローラ _ 8-1 コントローラでのCRUD方法 _ 8-1-1 Read(一覧) _ 8-1-2 Read(詳細) _ 8-1-3 Create(作成) _ 8-1-4 Update(更新) _ 8-1-5 Delete(削除) _
test _ 1 イントロダクション _ 1-1 マニュアル _ 1-2 コミュニティ _ 1-3 チュートリアル _ 1-4 オープンソース _ 2 ファイル構成 _ 3 CakePHPの構造 _ 3-1 動作条件 _ 3-2 命名規則 _ 4 URL書き換え _ 5 インストール _ 6 初期設定 _ 6-1 URLマッピング _ 6-2 各種クラスやファイルの読み込み _ 7 MVC(モデル・ビュー・コントローラ) _ 8 コントローラ _ 8-1 コントローラでのCRUD方法 _ 8-1-1 Read(一覧) _ 8-1-2 Read(詳細) _ 8-1-3 Create(作成) _ 8-1-4 Update(更新) _ 8-1-5 Delete(削除) _ 8-2 コントローラの属性 _
API for CakePHP 1.2x:FormHelper フォームとフォームの部品を出力するためのヘルパー。inputメソッドは様々な部品を出力出来ます。 メソッド button ($title, $options=array()) checkbox ($fieldName, $options=array()) create ($model=null, $options=array()) dateTime ($fieldName, $dateFormat= 'DMY', $timeFormat= '12', $selected=null, $attributes=array(), $showEmpty=true) day ($fieldName, $selected=null, $attributes=array(), $showEmpty=true) end ($op
レコードの検索はfindメソッドを使用します。findメソッドでは検索のタイプを指定し、必要に応じてオプションを指定します。 find(string $type, array $options) 検索のタイプ 検索のタイプは以下のいずれかを指定できます。 all(全てのレコード) first(最初のレコード) count(レコード数) list(リスト表示用の配列を取得) neighbors(前後のレコード) threaded(親子関係のレコード、ツリー状にネストされた配列を取得できる) 検索条件 検索条件は、テキストまたは配列で指定します。カラム名はテーブルが結合されるケースを想定して'Post.title'のように'モデル名.カラム名'とするのが良いです。 テキストで指定する $option['conditions'] = "Post.title = 'cake' "; $this
インストールディレクトリに関する設定(webroot/index.php)、データベースに関する設定(app/config/database.php)、基本設定(app/config/core.php)などを行います。必要に応じてルーティングに関する設定(app/config/routes.php)も行います。 (app/config/inflections.phpやapp/config/bootstrap.phpもあります。) インストールディレクトリに関する設定(webroot/index.php) CakePHPのルート・ディレクトリ、作成したアプリケーション・ディレクトリなど設定を行います。 データベースに関する設定(app/config/database.php) データベースのタイプ、ユーザー名、パスワード、データベース名、などに関する設定を行います。データベースの文字コ
モデルを拡張します。ビヘイビアではモデルでよく使う機能をまとめたり、データの入出力の間で処理を行なうようにbeforeFindやafterSaveなどのコールバックメソッドを実装することができます。組み込みのビヘイビアとしてTranslateBehavior, TreeBehavior, AclBehavior があります。 ビヘイビアを作成する ビヘイビアはModelBehaviorを継承したクラスを作成し、models/behaviorsディレクトリに保存します。ビヘイビアが使われる時にはsetupメソッドが呼ばれます。setupメソッドにはモデルからモデル自身と追加パラメータが渡されます。 class TreeBehavior extends ModelBehavior { var $settings = array(); function setup(&$model, $co
AuthComponentを使ってユーザー認証の仕組みを追加することができます。有効期間はセッションに関する設定(Session.timeoutとSecurity.level)に従います。また、自動ログイン機能について次ページ以降で説明します。 ページ遷移は次のようになります。 ログインが必要なページAにアクセス ログインページへリダイレクト(users/login,$loginAction属性で設定可能) ログイン・フォームを送信 ログイン直前のページAへリダイレクト 準備1 AuthComponentがデフォルトで参照するデータベースのテーブルは、id,username,passwordという名前のカラムを含むusersテーブルとなっています。別のテーブルやカラム名を使いたいときは、AuthComponentの属性を使って変更できます。 準備2 ログイン/ログアウト用のコントローラ
ブラウザを閉じた後でも自動的にログインできるようにログイン・フォームに「次回から自動的にログイン」「次回からログインを省略」「Remember me」などのチェックボックスが備わっているケースを良く見かけます。AuthComponentとCookieComponentを使って実装してみます。AuthComponentのページで説明した例の続きとして説明いたします。 その1では、Authenticationにある方法を紹介します。 自動ログイン機能とは 自動ログイン機能とは、ログインが必要なページにもユーザー名やパスワードの入力なしでアクセスできる便利な機能です。ログイン時に「次回から自動的にログイン」にチェックしてログインすると自動ログインが有効になります。クッキーが使えるブラウザのみ対応。 自動ログインの仕組み 「次回から自動的にログイン」にチェックしてログインしたユーザーのブラウ
レコードの検索はfindメソッドを使用します。findメソッドでは検索のタイプを指定し、必要に応じてオプションを指定します。 find(string $type, array $options) 検索のタイプ all first count neighbors list 検索条件 検索条件は、テキストまたは配列で指定します。カラム名はテーブルが結合されるケースを想定して'Post.title'のように'モデル名.カラム名'とするのが良いです。 テキストで指定する $option['conditions'] = "Post.title = 'cake' "; $this->Post->find('all',$option); 配列で条件を組み立てる 検索条件の基本はカラム名をキーにした配列を作っていきます。 $option['conditions'] = array('Post.tit
コマンドラインからBakeを使用して、アプリケーションに必要なコードを生成する事が出来ます。データベースにテーブルを作成しておけば、Bakeを使ってデータベース設定、モデル、ビュー、コントローラのファイルを生成する事が出来ます。 Bakeを使用する準備 cake/console/にcakeというコマンドのファイルがありますので、パスを通しておきます。 パスが通っていない時のエラー $ cake bake -bash: cake: command not found シェルがbashならホームディレクトリの設定ファイル(.profile)に以下のように記述して、新規シェルにアクセスし直します。 'path-to-cake/cake_1.2b'の部分はcakeをインストールしたディレクトリを指定します。 PATH=$PATH:/path-to-cake/cake_1.2b/cake/co
CakePHPはクラス名やファイル名、データベースのテーブル名やカラム名などの名前を規則に従って利用しています。完全に従っていなくても利用できますが、命名規則を知っておくと便利だったり、他人のコードが理解しやすくなります。 付録 C. Cake 規約 CakePHPシステムデザイン(最新規約) CamelCased とアンダースコアード CamelCased 先頭が大文字の複数単語がスペースなしで連結されたもの。 例:UserName アンダースコアード 全て小文字の複数単語がスアンダースコアで連結されたもの。 例:user_name モデル クラス名は単数形でCamelCased(Post) ファイル名は単数形でアンダースコアード(post.php) テーブル名は複数形でアンダースコアード(posts) コントローラー クラス名は複数形でCamelCased + "C
今回は、ユーザー名とパスワードの代わりにユーザーを特定するキー(パスポートと呼びます)をクッキーとデータベースに記録します。ログインしていないユーザーがパスポートを持っていればデータベースからユーザーを特定し、自動でログインさせます。この例では、Authコンポーネントが使うセッションの有効期限とパスポートが使うクッキーの有効期限が異なります。 データベースにPassportsテーブルを作成します。 CREATE TABLE `passports` ( `id` int(11) NOT NULL auto_increment, `user_id` int(11) NOT NULL default '0', `passport` varchar(60) NOT NULL default '', `updated` datetime NOT NULL default '0000-00-00 0
次のページ
このページを最初にブックマークしてみませんか?
『Notes | GARACTER』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く