PHPで配列のデータをカンマ区切りデータに変換する方法です。
「array(‘taro’,’jiro’,’saburo’)」
のような配列データを
「taro,jiro,saburo」
PHPで配列のデータをカンマ区切りデータに変換する方法です。
「array(‘taro’,’jiro’,’saburo’)」
のような配列データを
「taro,jiro,saburo」
CakePHP2でトップページを指定する方法です。
http://www.example.comとブラウザに入力したときに、
http://www.example.com/posts/index/を表示させたいというケースです。
コントローラー名が「posts」、アクション名が「/index」になっています。
DBから改行を含んだ文字列を取ってきて、その改行を無くし、さらに文字数を指定したいケースが発生しました。
下記のような手順でうまくいきました。
(1)
文字列を置換する関数「str_replace」
str_replace(‘検索文字列’,’置換する文字’,’元の文章’)
CakePHP2ではVer1.3とURL(GET)関係の取得方法が変わっています。
Ver2からは「$this->request->params」のように真ん中に「request」が入ります。
URLのパラメタが下記のような場合、それぞれ取得方法が変わります。
「http://www.example.com/posts/test/2」
「http://www.example.com/posts/test/?id=2」
CakePHP2のインストール後の画面で、DB設定やTmpの書き込み設定が正常かどうか、表示されますが、その下に下記のようなメッセージが表示されます。「DebugKitがインストールされていません」というメッセージです。
DebugKitは開発を行うときにとても便利なので、インストールしておきましょう。
1 2 |
DebugKit is not installed. It will help you inspect and debug different aspects of your application. You can install it from GitHub |
上記のメッセージの最後の「GitHub」という文字がリンクになっています。
クリックすると下記のページが表示されるので、そこからDebugKitをダウンロードします。
画面右下の「DownLoad Zip」というボタンを押すとダウンロードが開始されます。
CakePHP1.3から2に以降した時に、以前と変わっている部分があったので、メモです。
1.3のソースをそのままコピペしたら、Sanitaizeクラスが無いとエラーが出ました。
サニタイズクラスを呼び出す部分は以下のように書きます。
1 2 3 4 5 |
App::uses('Sanitize', 'Utility'); class TestController extends AppController { $this->data = Sanitize::clean($this->data, array('encode' => false)); } |
PHPでforeach文を使ったときに、
1 |
Warning: Invalid argument supplied for foreach() |
というエラーが出た場合の対処法です。
考えられる原因は
1.配列が空
2.型が配列ではない
の2つです。
CakePHPでSaveAllするときにハマッたのでメモです。
フォームのPOSTで下記のデータが飛んできたときに、SaveAllしたらうまく行きませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 |
$this->data = array( 'Model' => array( 0 => array( 'name' => 'taro', 'age' => 30 ), 1 => array( 'name' => 'jiro', 'age' => 40 ) ) ); |
SaveAllの書き方は間違っていないし・・・
1 |
$this->Model->saveAll ( $this->data ['Model'] ) |
CakePHPを使っていて、テーブルにデータを登録した直後に、そのIDを他のテーブルに保存したいケースがあります。
テーブルに最後に登録したデータのIDを調べたい場合は、以下のようになります。
1 |
$lastID = $this->モデル名->getLastInsertID(); |
実際の使い方の例です。
1 2 3 |
if($this->Model->save($data)){ $lastID = $this->モデル名->getLastInsertID(); } |
HTML5では複数のファイルアップロードができるようになっています。
フォームは以下の様に記載します。
フォームタグで「enctype=”multipart/form-data」を設定するのと、
インプットタグで「name=”upfile[]” multiple」を設定するのがポイントです。
これでファイルアップロードダイアログで複数の画像ファイルを選択できるようになります。
1 2 3 4 5 6 |
<form action="/photo/add_end.php" method="post" enctype="multipart/form-data"> Files:<input type="file" name="upfile[]" multiple> <input type="text" name="name"> <input type="text" name="keyword"> <input type="submit" value="submit"> </form> |