我在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 ) )
所以我有两个问题
更新 - 我进入了/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,我看不到任何位置
答案 0 :(得分:0)
您正在为“位置”模型创建表单,但您需要指定选择的字段:
echo $this->Form->input('Location.location', array('type' => 'select', 'options' => $options));
或者,如果它实际上不是“位置”模型,则将create()
形式的“位置”替换为正确的模型,或者如果它不是模型则使用null
:
$这 - >形状配合>创建(空);
答案 1 :(得分:0)
我想出来并决定其他人可能会觉得它很有用。
数组需要格式化为
$options = array(
'value' => 'Display');
所以,我用了
$options = array(
'NYC' => 'NYC',
'LA' => 'LA');