CakePHPクッキング

Formの便利な使い方

開発環境:CakePHP2.5.1

問い合わせフォームや会員機能など、WEBサイトを作る際に必ず必要になるフォームですが、様々な便利機能があります。

Formのaccept-charsetを変更

フォームは基本的にapp/Config/core.phpで指定してあるApp.encodingの文字コードが設定されます。
これを一時的に別の文字コードに変更するには次のようにencodingを指定します。

<?php echo $this->Form->create('Contact', array('action' => 'index', 'encoding' => 'Shift_JIS')) . PHP_EOL; ?>

これでフォームのaccept-charsetはShift_JISに変更されます。

aタグでpostする方法

aタグにonclick属性をつけてpostでデータを渡そうとすると、細々書かないといけません。
ですが、CakePHPでは簡単に書くことができます。

ビューに次のように書きます。

<?php echo $this->Form->postLink('追加', array('action' => 'add')); ?>

そうすると、次のようなコードが生成されます。

<form action="/pages/add" name="post_53e15638842ba219502240" id="post_53e15638842ba219502240" style="display:none;" method="post">
<input type="hidden" name="_method" value="POST"/>
</form>
<a href="#" onclick="document.post_53e15638842ba219502240.submit(); event.returnValue = false; return false;">追加</a>

これで見た目は通常のaタグリンクと変わりありませんが、実際はFormのpostとして動くコードになります。

追加でパラメータを加えたい場合は、次のようにします。

<?php echo $this->Form->postLink('追加', array('action' => 'add', 'id' => 10)); ?>

すると、formのactionが/pages/addから/pages/add/id:10のようになります。

フォームから受け取ったデータかの判別方法

フォームでPOSTする場合、次のようなコードを書きます。

<?php echo $this->Form->create('Sample', array('type' => 'post')) . PHP_EOL; ?>

このフォームからデータを受け取ったかの判断をするには、Requestオブジェクトのisメソッドを利用します。

<?php
if ($this->request->is('post')) {
}

こんな感じでPostされた場合とそうでない時とを分岐させるのに利用できます。

フォームのデータをビューに渡す

フォームで受け取ったデータをビューに渡す場合、$this->setで渡さなくても下記の方法でビューで受け取ることができます。

<?php print_r($this->request->data); ?>
WordPressとCakePHPの共存

サイトを作るのに便利なWordPress。プラグインも数多く用意されて

サイトマップの作成方法

Googleのウェブマスターツールに渡すためのサイトマップの作成方法で

INSERTしたIDを取得する

データを保存した後にINSERTされたデータのIDを使って何かの処理を

ファイルの存在確認やフォルダー内のファイル一覧取得

特定のファイルの存在を確認したい場合や特定のフォルダー内にあるファイル

リンクの最後に常にスラッシュをつける方法

URLの最後に常にスラッシュをつけるかつけないかを統一する方法は、UR

countやsumを使う時のフィールド名を指定する

CakePHPでcountやsumなどを使う場合、ちょっとした工夫が必

Formの便利な使い方

問い合わせフォームや会員機能など、WEBサイトを作る際に必ず必要になる

ヘルパーをオーバーライドする

CakePHPで便利な機能が詰まったヘルパーですが、時々もう少しこうだ

特定の時だけSQLの条件を追加するならSet::mergeを使う

SQLの条件を追加したい時に使うのがarray_mergeなどですが、

ページネーションではDISTINCTではなく、GROUP BYを使う

重複したデータを省く時に使うDISTINCTですが、ページ送りで使う時

Model内で別のModelを呼び出す

モデル内で別のモデルを使いたいケースがあった場合、次のようにすることで

CakePHPでGoogleAnalyticsAPIを使う

CakePHPでGoogleAnalyticsを使う方法について見てい

独自のfindを定義するfindMethods

findをより便利に、よりスッキリ書くのに、findMethodsを使

TCPDFを使ってCakePHPでPDFを作成

CakePHPでPDFを作成するには幾つかの方法がありますが、今回はT

JavaScriptをコードの最下部に配置

SEOの観点からJavaScriptのコードは一番下に記述したいところ

無限スクロールをさせる

TwitterやFacebookのタイムラインを見ていて、ページの下に

PHPExcelの導入

ExcelにDBのデータを表示して一覧を作ったり、請求書などのフォーマ

Warning: SplFileInfo::openFile〜の警告が表示されたら

ShellとWEBの両方で同一のModelを呼び出す時に「Warnin

連結されていないデータを抽出

通常、テーブルを連結してデータを取得するには、アソシエーションを利用し

データを取得する

データを取得したい時に少し変わった条件で取得したい場合があります。

PAGE TOP ↑