我有以下带有 CakePHP 的选择框。
//Users/settings.ctp
$options = array('NYC', 'LA');
echo $this->Form->create('Location');
echo $this->Form->input('Location', array('type' => 'select', 'options' => $options));
echo $this->Form->end(__('Submit'));
在 UsersController 我有
public function settings($id = null){
if ($this->request->is('post')) {
$location = $this->request->data;
//$location = $location['Location']['Location'][0];
$this->Session->setFlash( __(print_r($location))); //displays '1' in the alert no matter the selection
}
}
当我在原始数据上使用 print_r 时,它显示以下内容。
Array ( [Location] => Array ( [Location] => 0 ) )
所以我有两个问题
- 正在选择项目的索引,而不是项目本身
- setFlash 窗口始终显示“1”。在列表框工作后,我需要进行一些字符串操作,很高兴看到输出。
更新 - 我进入 /Cake/View/Helper/FormHelper.php 并做了一些挖掘
我在以下行做了一个 print_r
$attributes = $this->_initInputField($fieldName, array_merge(
(array)$attributes, array('secure' => self::SECURE_SKIP)
));
这导致
Array ( [value] => 0 [class] => [name] => data[Users][Location] [id] => UsersLocation )
传递的值为 0,我在任何地方都看不到位置