Поиск

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Закрыто
mubin_yunusov
Сообщения: 150
Зарегистрирован: 2015.02.05, 11:01
Контактная информация:

Поиск

Сообщение mubin_yunusov »

Добрый день.
Имеется Модель Вид Контроллер.
В view есть данный виде таблиц (CGriview).
Как создать примерно такую форма поиска?
Вложения
q1w2e3.JPG
q1w2e3.JPG (52.98 КБ) 1847 просмотров
mubin_yunusov
Сообщения: 150
Зарегистрирован: 2015.02.05, 11:01
Контактная информация:

Re: Поиск

Сообщение mubin_yunusov »

Код: Выделить всё

<div class="form">
        <?php $form=$this->beginWidget('CActiveForm', array(
                'id'=>'incidends',
                'enableAjaxValidation'=>false,
        )); ?>
        <?php echo $form->errorSummary($model);?>
        <table id='ztable'>
            <tr>
                <td><?php echo "<strong>Дата начало</strong>"; ?></td>
                <td>
                    <?php echo CHtml::activeTextField($model,'date_begin'); ?>
                    <?php echo $form->error($model,'date_begin'); ?>
                </td>
                <td><?php echo "<strong>До</strong>"; ?></td>
                <td>
                    <?php echo CHtml::activeTextField($model, 'xxx'); ?>
                    <?php echo $form->error($model,'date_end'); ?>
                </td>
                <td><?php echo CHtml::submitButton('Поиск'); ?></td>

            </tr>
        </table>
        <?php $this->endWidget(); ?>
    </div><!-- form -->
У меня нет поле До в базе, как я могу передать данный этой поле?
Frostiks25
Сообщения: 8
Зарегистрирован: 2014.03.11, 14:18

Re: Поиск

Сообщение Frostiks25 »

Код: Выделить всё

SELECT * FROM table WHERE DATE BETWEEN start_date AND end_date
С форматом даты надеюсь разберешься.
mubin_yunusov
Сообщения: 150
Зарегистрирован: 2015.02.05, 11:01
Контактная информация:

Re: Поиск

Сообщение mubin_yunusov »

Frostiks25 писал(а):

Код: Выделить всё

SELECT * FROM table WHERE DATE BETWEEN start_date AND end_date
С форматом даты надеюсь разберешься.
1)А как передать данный из формы в модели?
2)Есть такое поля в форме который нет в модель, модель и элементы форм зависимые.

Код: Выделить всё

<?php echo CHtml::activeTextField($model, 'date_begin'); ?>
Можно сделать это независимым?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Поиск

Сообщение ElisDN »

Добавьте в модель:

Код: Выделить всё

public $date_begin;
и пропишите в rules().
mubin_yunusov
Сообщения: 150
Зарегистрирован: 2015.02.05, 11:01
Контактная информация:

Re: Поиск

Сообщение mubin_yunusov »

ElisDN писал(а):Добавьте в модель:

Код: Выделить всё

public $date_begin;
и пропишите в rules().
Добавиль модель

Код: Выделить всё

public $date_begin; 
и прописал в rules.
Поставил такое условие:

Код: Выделить всё

$criteria->addBetweenCondition('date_begin', $this->date_begin_from, $this->date_begin_to);
 
Условия работает правильно когда заполнены поля "Дата начало" и "До". А мне нужно сделать так чтобы если эти поля будет пустым выводилась все записи? Как сделать так чтобы если эти поля были пустым условия(Condition) не сработало?
Аватара пользователя
Said
Сообщения: 138
Зарегистрирован: 2015.06.04, 10:16

Re: Поиск

Сообщение Said »

Добавте в моделе:

Код: Выделить всё

public $date_begin;
public $date_end;
 
в рулсе

Код: Выделить всё

public function rules() {
    return array(
        .....
        array('....,date_begin,date_end', 'safe', 'on'=>'search'),
    );
}

и условия в "search"

public function search() {

    ..............................


    if(!empty($this->date_begin)) {
        $criteria->addcondition('date_begin>=:date_begin');
        $criteria->params[':date_begin'] = $this->date_begin;
    }

    if(!empty($this->date_end)) {
        $criteria->addcondition('date_begin<=:date_end');
        $criteria->params[':date_end'] = $this->date_end;
    }

 
mubin_yunusov
Сообщения: 150
Зарегистрирован: 2015.02.05, 11:01
Контактная информация:

Re: Поиск

Сообщение mubin_yunusov »

Said писал(а):Добавте в моделе:

Код: Выделить всё

public $date_begin;
public $date_end;
в рулсе

Код: Выделить всё

public function rules() {
    return array(
        .....
        array('....,date_begin,date_end', 'safe', 'on'=>'search'),
    );
}

и условия в "search"

public function search() {

    ..............................


    if(!empty($this->date_begin)) {
        $criteria->addcondition('date_begin>=:date_begin');
        $criteria->params[':date_begin'] = $this->date_begin;
    }

    if(!empty($this->date_end)) {
        $criteria->addcondition('date_begin<=:date_end');
        $criteria->params[':date_end'] = $this->date_end;
    }

Огромное Спасибо Вам Said. Благодарен.
Закрыто