0

我有以下代码:

<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'));
无论我把它放在哪里,这条线都会显示为一个选择框。

我该如何解决这个问题?

4

3 回答 3

1

您可以尝试添加type到您的选项数组并明确定义您希望输入的内容。

编辑

在深入研究 Cake API 之后,我想我可能在这里找到了可能会影响您的特定代码行。

if (preg_match('/_id$/', $fieldKey) && $options['type'] !== 'hidden') {
    $options['type'] = 'select';
}

您似乎正在触发此if条件。如果是这样,您唯一的选择是type在您的选项数组中显式设置属性。

于 2011-07-29T16:10:30.727 回答
0

现在我正在使用一个黑客:

echo $this->Form->input('server_id', array('label'=> 'System ID',
                                           'type'=>'text'));

我明确设置type为文本。

对于其他输入,我不必这样做,但这可能是它必须的方式。

于 2011-07-29T16:10:41.740 回答
0

如果显示与否无关紧要,只需隐藏输入。正如插入mysql时会为其分配一个新的id。

    echo $this->Form->input('server_id', array('type'=> 'hidden'));
于 2011-07-29T16:11:33.490 回答