POSTメソッドのBODYデータ
$this->requestのdataメソッドまたはdataプロパティでアクセスできる。
dataプロパティだとnullチェックが必要なので、dataメソッドで取得した方がシンプル。
<input type='text' name='data[User][id]' value='1'>
<input type='text' name='data[User][name]' value='suzuki'>
取得の際に、nameの先頭のdataという文字列は取り除かれる。
ドットつなぎでアクセスすることができる。該当データがない場合はnullが返る。
※実はdata()はdataプロパティへのアクセスをHash::get()で行っているだけ。
$id = $this->request->data('User.id');
//=>1
$name = $this->request->data('User.name');
//=>suzuki
$user = $this->request->data('User');
/*
[
'id'=>'1',
'name'=>'suzuki'
]
*/
ドットつなぎは数値でも有効。
<input type='text' name='user[]' value='7'>
<input type='text' name='user[]' value='8'>
<input type='text' name='user[]' value='9'>
$id = $this->request->data('User.2');
//=>9
※dataプロパティだとnullの場合にエラーが出るので、nullチェックが必要になる。
if(isset($this->request->data['User']['id'])){
$id = $this->request->data['User']['id'];
}
GETメソッドのクエリストリング
※POSTメソッドのクエリストリングの値も同様の方法で取得できる。
urlが /posts/index?page=1&sort=titleの場合。
$this->requestのqueryメソッド(CakePHP 2.3以降)またはqueryプロパティでアクセスできる。
queryプロパティだとnullチェックが必要なので、queryメソッドで取得した方がシンプル。
$page = $this->request->query('page');
※queryプロパティだとnullの場合にエラーが出るので、nullチェックが必要になる。
if(isset($this->request->query['page'])){
$page = $this->request->query['page'];
}
##nameとの対応詳細
[]とするとシーケンスが入るっぽい。
###name=hoge
<input name=hoge>
'hoge'=>'入力した値1'
//data['hoge']で取得
###name=hoge[]
<input name=hoge[]>
<input name=hoge[]>
'hoge' => array(
(int) 0 => '入力した値1',
(int) 1 => '入力した値2'
)
//data['hoge'][0]で取得。
//もしくは
//foreach(data['hoge'] as $v){
//で取得。
###name=hoge[][]
<input name=hoge[][]>
<input name=hoge[][]>
'hoge' => array(
(int) 0 => array(
(int) 0 => '入力した値1'
),
(int) 1 => array(
(int) 0 => '入力した値2'
)
)
##name=hoge[fuga][]
<input name=hoge[fuga][]>
<input name=hoge[fuga][]>
'hoge' => array(
'fuga' => array(
(int) 0 => '入力した値1',
(int) 1 => '入力した値2'
)
)
##name=hoge[][文字列]
<input name=hoge[][fuga]>
<input name=hoge[][fugafuga]>
'hoge' => array(
(int) 0 => array(
'fuga' => '入力した値1'
),
(int) 1 => array(
'fugafuga' => '入力した値2'
)
)
##name=hoge[シーケンス][文字列]
save($this->request->data['hoge']);で保存可能な形式となっている。
<input name=hoge[0][fuga]>
<input name=hoge[0][fugaguga]>
<input name=hoge[1][fuga]>
<input name=hoge[1][fugaguga]>
'hoge' => array(
(int) 0 => array(
'fuga' => 'fasfa',
'fugafuga' => 'fdsafda'
),
(int) 1 => array(
'fuga' => 'asfsadf',
'fugafuga' => 'afdsaf'
)
)