Отображение входных данных в виде выбора с помощником формы торта - PullRequest
0 голосов
/ 29 июля 2011

У меня есть следующий код:

<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'));
отображается как поле выбора независимо от того, где я ее размещаю.

Как мне решить эту проблему?

Ответы [ 3 ]

1 голос
/ 29 июля 2011

Вы можете попытаться добавить type к вашему массиву опций и явно определить, что вы хотите, чтобы ввод был.

Редактировать

Покопавшись в Cake API, я думаю, что, возможно, я нашел здесь определенную строку кода, которая может повлиять на вас.

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

Вероятно, вы запускаете это условное условие if.Если это так, ваш единственный вариант - явно установить атрибут type в вашем массиве параметров.

0 голосов
/ 29 июля 2011

Просто скройте ввод, если это не имеет значения, показывать или нет.Как и при вставке mysql назначит ему новый идентификатор.

    echo $this->Form->input('server_id', array('type'=> 'hidden'));
0 голосов
/ 29 июля 2011

Прямо сейчас я использую хак:

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

Я явно устанавливаю type как текст.

Мне не нужно делать это для другого ввода, но это может быть так.

...