[PHP] Yii, Select2 и автоотправка формы

Yii

Задача: сделать форму из одного поля (selectbox); без multiselect’a; при выборе значения должна происходить автоматическая отправка данных (метод GET); под Yii.

Решение: берем view, в которой надо сделать форму и пишем такое:

<div class="form">
        <?php echo CHtml::beginForm(CHtml::normalizeUrl(array('league/view')), 'get'); ?>
        <?php echo CHtml::endForm(); ?>
</div>

Таким образом создается форма. В beginForm передается action и method. В данном случае, action — это результат работы метода normalizeUrl, а method — просто GET.

В качестве selectbox’a решено было использовать Select2, тем более, что под Yii уже есть обертка Yii-select2. PHP-код для вставки виджета Select2 выглядит так:

<?php
$this->widget('Select2', array(
        'name' => 'id',
        'id'=>'league_id',
        'data' => $data,
        'htmlOptions'=>array('submit'=>'', 'placeholder'=>'Select league'),
))
?>

В качестве $data передается ассоциативный массив — значения выводятся в списке, а ключи выступают в роли реальных значений select’a. В htmlOptions задается автосабмит формы (‘submit’=>’ ‘) и плейсхолдер. СтОит сказать, что плейсхолдер появится только, если в массиве $data первый элемент будет пустой (‘ ‘=>’ ‘), иначе — плейсхолдер идет лесом и подставляется первое значение из $data.

Весь код выглядит так:

<div class="form">
        <?php echo CHtml::beginForm(CHtml::normalizeUrl(array('league/view')), 'get'); ?>
        <?php
        $this->widget('Select2', array(
            'name' => 'id',
            'id'=>'league_id',
            'data' => $data,
            'htmlOptions'=>array('submit'=>'', 'placeholder'=>'Select league'),
        ))
        ?>
        <?php echo CHtml::endForm(); ?>
    </div>

Вот и все. Кода на копейку, а дело сделано 🙂

, , ,

Оставить комментарий

Top ↑ | Main page | Back