0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CakePHP - ブログチュートリアル

Posted at

いろいろな関数

is

  • is('get') 現在のリクエストが GET かどうかを調べます。
  • is('put') 現在のリクエストが PUT かどうかを調べます。
  • is('post') 現在のリクエストが POST かどうかを調べます。
  • is('delete') 現在のリクエストが DELETE かどうかを調べます。
  • is('head') 現在のリクエストが HEAD かどうかを調べます。
  • is('options') 現在のリクエストが OPTIONS かどうかを調べます。
  • is('ajax') 現在のリクエストが X-Requested-With = XMLHttpRequest に由来するものか どうかを調べます。
  • is('ssl') リクエストが SSL 経由かどうかを調べます。
  • is('flash') リクエストに Flash の User-Agent があるかどうかを調べます。
  • is('mobile') リクエストがモバイルエージェントの共通リストに由来しているかどうかを調べます。

find

find(string $type = 'first', array $params = array())

  • データの取得のために使う関数。
  • $type =
    • 'all'
    • 'first'
    • 'count'
    • 'list'
    • 'neighbors'
    • 'threaded'
    • 自分で定義したカスタムfinder
  • $typeは大文字と小文字を区別する。
  • $paramsはいろいろな種類のfind()ヘのパラメータを渡すために使用。(デフォルトでは以下)
array(
    'conditions' => array('Model.field' => $thisValue), // 検索条件の配列
    'recursive' => 1, // int
    // フィールド名の配列
    'fields' => array('Model.field1', 'DISTINCT Model.field2'),
    // 並び順を文字列または配列で指定
    'order' => array('Model.created', 'Model.field3 DESC'),
    'group' => array('Model.field'), // GROUP BYのフィールド
    'limit' => n, // int
    'page' => n, // int
    'offset' => n, // int
    'callbacks' => true, // falseの他に'before'、'after'を指定できます
    'having' => array('COUNT(Model.field) >' => 1), // HAVING 条件の配列
    'lock' => true, // FOR UPDATE ロックを有効にします
)

findbyid

サンプル:$this->Cake->findById(7);
対応するSQL:Cake.id = 7

find('all')

find('all', $params)

  • 配列で結果を返す。

戻り値は以下のような形式

Array
(
    [0] => Array
        (
            [ModelName] => Array
                (
                    [id] => 83
                    [field1] => value1
                    [field2] => value2
                    [field3] => value3
                )

            [AssociatedModelName] => Array
                (
                    [id] => 1
                    [field1] => value1
                    [field2] => value2
                    [field3] => value3
                )

        )
)

set

$this->set('変数名',$値);

  • Viewにデータを渡すためのControllerの機能。
  • setメソッドを使用して渡された変数は、view内で使用することができる。

create

Model::create(array $data = array())

  • データを保存するためにモデルの状態をリセットする。
  • 実際にはデータベースにデータは保存されない。
  • Model::$idフィールドがクリアされ、データベースのフィールドのデフォルト値を元に、Model::$dataの値をセットする。
  • データベースフィールドのデフォルト値が存在しない場合、Model::$dataには空の配列がセットされる。
  • $dataパラメータが渡されれば、データベースフィールドのデフォルト値都マージされ、モデルのインスタンスはデータを保存する準備ができる。
  • $dataパラメータへfalsenullが渡された場合、Model::$dataには空の配列がセットされる。

save

save(array $data = null, array $params = array())

  • 配列の形式のデータを受け取ってそれを保存する。
  • 2つ目のパラメータはバリデーションしない場合に使われる。
  • 3つ目のパラメータは保存する対象のフィールドのリストを渡す。

redirect

Controller::redirect(mixed $url, integer $status, boolean $exit)

  • フローをコントロールするメソッド。(画面遷移)
  • 最初の引数に、CakePHPの相対URLを指定する。
  • $urlに相対URLまたは絶対URLを指定することができる。
  • 2つ目のパラメータは、リダイレクトに伴うHTTPステータスコードを定義することができる。
  • 3つ目のパラメータにfalseを指定しない限りはリダイレクト後にexit()を呼び出す。

グローバル関数

__

__(string $string_id, boolean $return = false)

  • $string_idは翻訳用のIDを規定
  • 第2引数で自動的に文字列をecho出力するか(デフォルトでは出力される)

h

h(string $text, string $charset = null)

  • htmlspecialchars()のラッパー。
  • 特殊文字をHTMLエンティティに変換する。

参考

ラッパー関数:元々ある関数を包む関数。関数をラッピングして使いやすくする為の関数。

function funcA_wrapper(paramA){

	//ラッパー関数を使い指定可能なパラメータを限定することでシンプルに!
	funcA(paramA, 111, 222, 333, 444, 555);

}

//パラメータを限定することで自由度が下がるが扱いが簡単に!
funcA_wrapper(paramA);

ヘルパー

ヘルパーの設定

CakePHPでヘルパーを有効にするには、Controllerに認識させる必要がある。
書くコントローラは$helpersプロパティを持っており、そのプロパティにはViewで利用できるヘルパーの一覧が保持されている。
Viewでヘルパーを使用するには、ヘルパーの名前をControllerの$helpers配列に追加する。

example
class BakeriesController extends AppController {
    public $helpers = array('Form', 'Html', 'Js', 'Time');
}

ヘルパーを使う

次のようにしてヘルパーを使う。

echo $this->Html->css('styles');

Html

link

HTMLリンクを作成するためのメソッド。

echo $this->Html->link(
    'Enter',
    '/pages/home',
    ['class' => 'button', 'target' => '_blank']
);

出力結果:

<a href="/pages/home" class="button" target="_blank">Enter</a>

その他の出力参考例

Form

create

  • フォームの開始タグを出力する。

フォームの作成

end

  • フォームの閉じタグを出力する。

フォームを閉じる

その他

フォームの要素の生成



※チュートリアルを進めながら更新していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?