Добавление отключенной опции в codeigniter form_dropdown - PullRequest
9 голосов
/ 23 июля 2011

Я пытаюсь выяснить, как добавить отключенную опцию в моем раскрывающемся списке, используя codeIgniter.Новичок в CI, и я попытался немного погуглить, но не смог найти ответ.

Мой код для выпадающего меню выглядит так:

    echo form_dropdown('category', array('0' => 'Choose a category...')  + $categories, '0');

Это дает мнераскрывающийся список со всеми моими опциями из переменной $ category, с надписью «Выберите категорию ...» (значение 0) вверху.Теперь, как сделать первый отключенным?Я знаю, как сделать так, чтобы он выбрал конкретный, который я настроил здесь.

Кто-нибудь может мне помочь?Спасибо

Ответы [ 7 ]

1 голос
/ 01 мая 2015

Я знаю, что это старый пост, но в текущей версии CI я могу сделать небольшой (похожий на sql-инъекцию) трюк, добавив " disabled="disabled к ключам опции, которую я хотел бы отключить.

$categories['0'] = '(Select Category)';
$categories['1'] = 'Category 1';
$categories['2" disabled="disabled'] = 'Restricted Category';
$categories['3'] = 'Category 3';

echo form_dropdown('category', $categories, '0');

Я не уверен, является ли это ошибкой form_helper CI, так как он не выполняет функции экранирования или очистки для раскрывающегося ключа / значений. В то же время, чтобы быть в безопасности, просто убедитесь, что ваши ключи и значения не будут поступать из любого пользовательского ввода.

0 голосов
/ 26 июля 2018
<?php echo validation_errors(); ?>
<?php echo form_open(''); ?>

<?php echo form_label('Gender:'); ?>
<?php echo form_dropdown(array('id'=>'selectinform', 'name'=>'gender', 'options'=>array('1'=>'Select', '2'=>'2','3'=>'3'), 'selected'=>'1')); ?>

<?php echo form_submit(array('id'=>'submit', 'value'=>'submit')); ?>
<?php echo form_close(); ?>

<script>
    $(document).ready(function(){
        $("#selectinform option:first").attr('disabled', 'disabled');
    });
</script>

Результат - IMG

0 голосов
/ 07 июля 2017

Решение:

Изменить 437-ю строку из form_helper.php:

с

.(in_array($key, $selected) ? ' selected="selected"' : '').’>'

на

.(in_array($key, $selected) ? ' disabled="disabled"' : '').’>'

и использовать функцию selected как disabled.Выглядит как лайфхак, но работает

0 голосов
/ 07 января 2016

Просто добавьте четвертый параметр $ extra к вашему раскрывающемуся списку в виде строки «disabled = disabled», как объяснено в CI Docs на https://codeigniter.com/user_guide/helpers/form_helper.html#available-functions

echo form_dropdown('category', array('0' => 'Choose a category...')  + $categories, '0', 'disabled=disabled');
0 голосов
/ 02 ноября 2015

Если у вас есть несколько статических опций, только переменная $ options также может быть простой строкой, содержащей опции в формате html, например:

$options = "
<option value=0 disabled>Select Category</option>
<option value=1>Category 1</option>
<option value=2>Category 2</option>";

echo form_dropdown('category', $options, '0');
0 голосов
/ 23 июля 2011

Если вы все еще хотите использовать form_helper, вы всегда можете расширить вспомогательный файл и сделать доступным тег «disable».Создайте MY_Form_helper.php и поместите его в каталог помощника, затем определите функцию form_dropdown в этом настраиваемом помощнике, после чего он переопределит поведение помощника формы.

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

Из руководства пользователя CI по адресу http://codeigniter.com/user_guide/helpers/form_helper.html:

Если вы хотите, чтобы открытие содержало дополнительные данные, такие как атрибут id или JavaScript, вы можете передать их в виде строки в четвертом параметре:

Таким образом, ваш код становится:

    echo form_dropdown('category', array('0' => 'Choose a category...')  + $categories, '0', 'disabled="disabled"');

Однако, если вы не фанат PHP или не используете защиту CSRF через помощника по формам, я просто напечатал бы вашу форму html самостоятельно,Это такое же количество текста, и вы используете меньше функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...