Создание и сопровождение сайтов

Блог. Yii. Советы по Yii. Глава тринадцатая.

Поиск

Подсказки по Yii. Глава тринадцатая.

  1. CMaskedTextField.

    Для удобства и наглядности ввода значения в поле может послужить виджет CMaskedTextField. Например: ввод номера телефона.

    yii-tips-13-00

    В представление запишем:

    1. <div class="row">  
    2.     <?php echo $form->labelEx($model,'phone'); ?>  
    3.     <?php  
    4.         $this->widget('CMaskedTextField'array(  
    5.             'model' => $model,  
    6.             'attribute' => 'phone',  
    7.             'mask' => '+7-999-999-9999',  
    8.             'placeholder' => '*',  
    9.         ));  
    10.         ?>  
    11.     <?php echo $form->error($model,'phone'); ?>  
    12. </div>  

    mask - это маска ввода значения,

    placeholder - символы до ввода значений пользователем, в данном случае это '*'

    В модели будем проверять введённое значение на корректность по регулярке:

    1. array('phone''match''pattern' => '/^((\+?7)(-?\d{3})-?)?(\d{3})(-?\d{4})$/''message' => 'Некорректный формат поля {attribute}'),  

    Кстати, http://regexlib.com - сайт с регулярными выражениями на все случаи жизни.

     

  2. statePersister.

    Иногда необходимо хранить состояние (значение) какой-либо переменной, но заводить для этого отдельную таблицу в БД или записывать в файл лень.

    На помощь придёт statePersister.

    Пользоваться крайне удобно и просто. Рассмотрим сразу пример:

    1. $data = Yii::app()->statePersister->load(); // получаем значения  
    2. if (isset($data['count']))  
    3.     $data['count']++;  
    4. else  
    5.     $data['count'] = 1;  
    6.   
    7. Yii::app()->statePersister->save($data); // устанавливаем значения  

    Значения сохраняются в файл protected/runtime/state.bin

     

  3. CListView.

    Рассмотрим различные "вкусности" виджета CListView.

    Имеется обычный блок:

    1. $this->widget('zii.widgets.CListView'array(  
    2.     'dataProvider'=>$model->search(),  
    3.     'itemView'=>'_view',  
    4.     'itemsTagName' => 'ol',  
    5.     'itemsCssClass' => 'advertising-blocks',  
    6.     'sortableAttributes'=>array('id''advert_block'),  
    7. ));  

    yii-tips-13-01

    Меняем шаблон вывода:

    1. $this->widget('zii.widgets.CListView'array(  
    2.     'dataProvider'=>$model->search(),  
    3.     'itemView'=>'_view',  
    4.     'itemsTagName' => 'ol',  
    5.     'itemsCssClass' => 'advertising-blocks',  
    6.     'sortableAttributes'=>array('id''advert_block'),  
    7.     'template' => '{pager} {sorter} {items} {sorter} {pager}',  
    8. ));  

    yii-tips-13-02

    Меняем текст "Сортировка" -> "Отсортировать по":

    1. $this->widget('zii.widgets.CListView'array(  
    2.     'dataProvider'=>$model->search(),  
    3.     'itemView'=>'_view',  
    4.     'itemsTagName' => 'ol',  
    5.     'itemsCssClass' => 'advertising-blocks',  
    6.     'sortableAttributes'=>array('id''advert_block'),  
    7.     'template' => '{pager} {sorter} {items} {sorter} {pager}',  
    8.     'sorterHeader' => 'Отсортировать по:',  
    9. ));  

    yii-tips-13-03

    Добавляем отображение краткой информации:

    1. $this->widget('zii.widgets.CListView'array(  
    2.     'dataProvider'=>$model->search(),  
    3.     'itemView'=>'_view',  
    4.     'itemsTagName' => 'ol',  
    5.     'itemsCssClass' => 'advertising-blocks',  
    6.     'sortableAttributes' => array('id''advert_block'),  
    7.     'template' => '{summary} {pager} {sorter} {items} {sorter} {pager}',  
    8.     'sorterHeader' => 'Отсортировать по:',  
    9. ));  

    yii-tips-13-04

    Меняем вывод краткой информации:

    1. $this->widget('zii.widgets.CListView'array(  
    2.     'dataProvider'=>$model->search(),  
    3.     'itemView'=>'_view',  
    4.     'itemsTagName' => 'ol',  
    5.     'itemsCssClass' => 'advertising-blocks',  
    6.     'sortableAttributes' => array('id''advert_block'),  
    7.     'template' => '{summary} {pager} {sorter} {items} {sorter} {pager} {summary}',  
    8.     'sorterHeader' => 'Отсортировать по:',  
    9.     'summaryText' => 'отображаем: {start} - {end}, а всего: {count}',  
    10. ));  

    yii-tips-13-05

    Меняем текст, если таблица пуста или ничего не найдено по заданному критерию:

    1. $this->widget('zii.widgets.CListView'array(  
    2.     'dataProvider'=>$model->search(),  
    3.     'itemView'=>'_view',  
    4.     'itemsTagName' => 'ol',  
    5.     'itemsCssClass' => 'advertising-blocks',  
    6.     'sortableAttributes' => array('id''advert_block'),  
    7.     'template' => '{summary} {pager} {sorter} {items} {sorter} {pager} {summary}',  
    8.     'sorterHeader' => 'Отсортировать по:',  
    9.     'summaryText' => 'отображаем: {start} - {end}, а всего: {count}',  
    10.     'emptyText' => 'Ничего нет',  
    11. ));  

    yii-tips-13-06

     

Обсудить статью на форуме