Yii按日期从标准搜索表单 [英] Yii search form by date from to criteria

查看:91
本文介绍了Yii按日期从标准搜索表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试创建搜索表单,从数据库到日期,从 - 到标准列出数据。
我开始在Yii,
我的任务是下一个:

I try to create search form to list data from database by date, from - to criteria. I'm Beginer in Yii, And my task is next:

我有模型:

public $from_date;
public $to_date;

规则:

public function rules()
    {
        return array(                 
                array('AppUserID','length', 'max'=>11),
                array('AUUsername','length', 'max'=>45),


                array('AUActionTime','type','type'=>'datetime','datetimeFormat'=>'yyyy-mm-dd hh:mm:ss'),


                array('AppUserID,AUUsername, from_date, to_date', 'safe', 'on'=>'search'),

        );
    }

public function attributeLabels()
    {
        return array(
                'ActionID' => 'ID',
                'AUUsername' => 'Naziv korisnika',
                'AUActionTime' => 'Vrijeme akcije',
         );
    }

public function search()
    {

        $criteria=new CDbCriteria;
        $criteria->compare('APUsername',$this->AUUsername,true);

        $criteria->compare('AUActionTime',$this->AUActionTime,true);

        $Date = date('yyyy-mm-dd hh:mm:ss',strtotime($this->AUActionTime));
        $startOfDay = $Date . '2014-03-12 00:00:00';
        $endOfDay = $Date . '2014-03-15 23:59:59';
        $criteria->addBetweenCondition('AUActionTime', strtotime($startOfDay) , strtotime($endOfDay) ); 



        return new CActiveDataProvider($this, array(
                'criteria'=>$criteria,
        ));
    }

我有下一个控制器:

public function actionListaexample()
    {


            $model = new Example;

            $this->layout='column1';
            if(isset($_POST['Example']))
        {
                     $model->attributes=$_POST['Example'];


            if($model->save())
                 $this->redirect(array('view','id'=>$model->AppUserID));
        }
        // renders the view file 'protected/views/site/index.php'
        // using the default layout 'protected/views/layouts/main.php'
        $this->render('listaexample',array('model'=>$model));


       }

我有下一个查看标准列表应该提供数据:

And I have next view for standard list where data should be presented:

<?php
Yii::app()->clientScript->registerScript('search', "
$('.search-button').click(function(){
    $('.search-form').toggle();
    return false;
});<br />
$('.search-form form').submit(function(){
    $('#application-grid').yiiGridView('update', {
        data: $(this).serialize()
    });
    return false;
});
");
?>

<?php echo CHtml::link('Napredna pretraga','#',array('class'=>'search-button')); ?>
<div class="search-form" style="display:none">
<?php $this->renderPartial('_search1',array(
    'model'=>$model,
)); ?>
</div>

<?php 
//$gridDataProvider = new CArrayDataProvider(array(
    //array('id'=>'ActionID', 'name'=>'ActionName'),
//    
//));
 $this->widget('bootstrap.widgets.TbGridView',array(
    'type'=>'striped bordered condensed',
    'id'=>'application-grid',
    'dataProvider'=>$model->search(),
    'template'=>"{items}",
    //'filter'=>$model,
    'columns'=>array(

        //'ActionID',
          'AUUsername',
              'AUActionTime',


        array(
            'class'=>'bootstrap.widgets.TbButtonColumn',
                        'template'=>'{update}{view}{delete}',
                        'buttons'=>array(
                                        'update'=>array(
                                                        'visible'=>'false',
                                                ),
                                        'view'=>array(
                                                        'visible'=>'true',
                                                ),
                                        'delete'=>array(
                                                        'visible'=>'false',
                                                ),
                                        ),

                        'htmlOptions'=>array('style'=>'width: 50px'),
        ),
    ),
));
?>

这是我的搜索与搜索输入字段的视图:

This is view for my search with search input fields:

<?php Yii::app()->clientScript->registerCoreScript('jquery'); ?>
<?php
/* @var $this ApplicationController */
/* @var $model Application */
/* @var $form CActiveForm */
?>

<div class="wide form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'action'=>Yii::app()->createUrl($this->route),
    'method'=>'get',
        'enableAjaxValidation'=>false,
        //$model->search(),



)); ?>



    <div class="row">
        <?php echo $form->label($model,'AUUsername'); ?>
        <?php echo $form->textField($model,'AUUsername',array('size'=>45,'maxlength'=>45)); ?>
    </div>





   <div class="row">

        <?php echo $form->label($model,'AUActionTime'); ?>
        <?php //echo $form->textField($model,'AUActionTime'); ?>

                <?php echo $form->dateField($model,'AUActionTime'); ?>
    </div>




    <div class="row buttons">
        <?php echo CHtml::submitButton('Search'); ?>
    </div>

<?php $this->endWidget(); ?>

</div>

我只是尝试输入字段,我将信息关于日期任何格式yyyy-mm-dd i知道使用格式,并与数据库存在数据进行比较。

I just try to make input fields where I put info about date any format yyyy-mm-dd i know work with formats, and to make comparation with database exist data.

我放置了很多代码,但任务并不会使高级用户复杂化。这只是搜索表单,但在我的项目中它不起作用。感谢您的帮助

I put realy much code but task is not to complicate for advanced users. That is only search form but in my project it don't work. Thank you for any help

推荐答案

search() function $ startOfDay $ endOfDay 包含彼此连接的2个日期,这将产生不正确的输出格式,如 2014-05-07 14:35:122014-03-12 00:00:00 。该值不会解析为 strtotime

In the search() function $startOfDay and $endOfDay contains 2 dates concatenated to each other, which will produce an incorrect output format like 2014-05-07 14:35:122014-03-12 00:00:00. That value won't parse right with strtotime.

public function search()
{
    $criteria=new CDbCriteria;
    // ...
    $Date = date('yyyy-mm-dd hh:mm:ss',strtotime($this->AUActionTime));
    $startOfDay = $Date . '2014-03-12 00:00:00';
    $endOfDay = $Date . '2014-03-15 23:59:59';
    $criteria->addBetweenCondition('AUActionTime', strtotime($startOfDay) , strtotime($endOfDay) ); 
    // ...
}

这篇关于Yii按日期从标准搜索表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆