使用自定义文本字段

时间:2016-05-02 19:43:46

标签: php yii

我需要使用自定义文本字段过滤CGridView。我有自定义dataprovider(CSqlDataProvider),我返回并填充表。表很好,但对我来说似乎很痛苦的是过滤它。我花了几个小时试图解决这个问题并且支持很差。 我看到有一些用于更新CGridView的jQuery方法,它需要'数据'参数,其值我不知道如何格式化。这是我在/ create文件中我需要这个东西的地方。

PHP:

<?php
Yii::app()->clientScript->registerScript('search', "
$('.search-form form').submit(function(){
    $.fn.yiiGridView.update('studentiSaSmjeraData', {
        data: $(this).serialize(),  -----------> this should be changed to get data from my text input using GET I guess, but I dont know the format
    });
    return false;
    });
");
?>

HTML和PHP考虑搜索表单:

<div class="search-form">
        <p>
            Pretraga po broju indeksa: 
        </p>
        <?php $form=$this->beginWidget('CActiveForm', array(
            'action'=>Yii::app()->createUrl($this->route),
            'method'=>'get',
        )); ?>
        <div class="row">
            Broj indeksa: <input type="text" class="br_ind" name="br_ind" id="br_ind" value=""></input>
        </div>
        <div class="row buttons">
            <?php echo CHtml::submitButton('Search'); ?>
        </div>
        <?php $this->endWidget(); ?>
</div>

我希望将此文本与dataProvider进行比较的列名为&#39; br_ind&#39;。

修改 似乎输入字段名称和id也必须对此做一些事情(它们应该采用某种特定的格式)。我的问题是 - 数据不是来自任何特定模型。它是通过表格产品和两个表格的一些额外约束获得的,因此我没有特定的模型来使用过滤器或任何在Yii中具有(afaik)支持的模型。但我想要的东西看起来很简单,但对我来说却变成了噩梦。关于函数参数的文档很差。 希望有人能提供帮助。任何人都碰到了这个并且无法解决它?

2 个答案:

答案 0 :(得分:0)

$.fn.yiiGridView.update()在幕后使用jQuery的ajax函数(如果为网格启用了ajax更新)。您可以查看details on the data parameter的jQuery文档以及可以传递给.ajax()的其他选项。

正如您当前正在使用$(this).serialize()那样,应该将jQuery添加br_ind=whatever_the_value_is作为查询字符串参数添加到服务器的GET请求中(同样,假设您使用的是GET,请不要查看使用POST或其他动词但没有提供足够信息的原因)。使用浏览器的开发人员工具验证所请求的URL和响应内容。

然后是服务器是否正在正确处理请求。你没有提供任何细节,所以我无法帮助你。

答案 1 :(得分:0)

这是一个样本

    $.fn.yiiGridView.update('activity-grid', {
        data: 'Activity[Type]='+tp+'&Activity[idAgent]='+agent+'&Activity[StartTime]='+start+'&Activity[EndTime]='+end
    });

在这个例子中,在服务器端,你只需要获得$ _GET [Activity]