开发者

Input showing as a select with cake form helper

开发者 https://www.devze.com 2023-03-24 01:05 出处:网络
I have the following code: <h2>Add System</h2> <?php echo $this->Form->create(\'ReleaseServer\');

I have the following code:

<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');
?>

For some reason the line

echo $this->Form->input('server_id', array('l开发者_运维技巧abel'=> 'System ID'));

shows up as a select box no matter where I place it.

How do I resolve this?


You could try adding type to your options array and explicitly defining what you want the input to be.

Edit

After digging around in the Cake API I think I may have found a specific line of code that may be affecting you here.

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

It appears likely that you are triggering this if conditional. If so, your only option is to explicitly set the type attribute in your options array.


Right now I am using a hack:

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

I am explicitly setting the type as text.

I do not have to do that for the other input, but that might be the way it has to be.


Just hide the input if it doesn't matter to show or not. As when inserting mysql will assign it a new id.

    echo $this->Form->input('server_id', array('type'=> 'hidden'));
0

精彩评论

暂无评论...
验证码 换一张
取 消