我有以下代码:
<h2>Add System</h2>
<?php
echo $this->Form->create('ReleaseServer');
echo $this->Form->input('server_name',array('error'=>array(
0 => 'Please choose a system name'),
'label'=>'System Name'
));
echo $this->Form->input('server_id', array('label'=> 'System ID'));
echo $this->Form->select('server_environment', $environments, null, array(
'empty' => "-- Select an Environment --",
'label' => "Select an Environment",
'error' => array(0 => 'Please choose an environment!'),
'onchange'=>'console.log(this.value);'
)
);
echo $this->Form->end('Save System');
?>
由于某种原因线路
echo $this->Form->input('server_id', array('label'=> 'System ID'));
无论我放在哪里,都会显示为选择框。
如何解决此问题?
答案 0 :(得分:1)
您可以尝试添加type
to your options array并明确定义您希望输入的内容。
修改强>
在使用Cake API进行深入研究之后,我想我可能已经找到了一些特定的代码行,可能会对您产生影响。
if (preg_match('/_id$/', $fieldKey) && $options['type'] !== 'hidden') {
$options['type'] = 'select';
}
您可能正在触发此if
条件。如果是这样,您唯一的选择是在选项数组中明确设置type
属性。
答案 1 :(得分:0)
现在我正在使用黑客攻击:
echo $this->Form->input('server_id', array('label'=> 'System ID',
'type'=>'text'));
我明确将type
设置为文字。
我不需要为其他输入执行此操作,但这可能是必须的。
答案 2 :(得分:0)
如果显示与否无关紧要,请隐藏输入。因为插入mysql时会为它分配一个新的id。
echo $this->Form->input('server_id', array('type'=> 'hidden'));