Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii cgridview ajaxlink仅在第一页中有效_Php_Yii - Fatal编程技术网

Php yii cgridview ajaxlink仅在第一页中有效

Php yii cgridview ajaxlink仅在第一页中有效,php,yii,Php,Yii,我有一个cgridview,其中一个专栏中有一个ajaxlink。ajaxlink仅在第一页中工作正常。对于其他页面,无论我如何单击ajaxlink,它都会在第一页中更新结果 $this->widget('zii.widgets.grid.CGridView', array( 'id'=>'promotion-facility-grid', 'ajaxUpdate'=>true, 'dataProvider'=>$model->search(), 'filter'=

我有一个cgridview,其中一个专栏中有一个ajaxlink。ajaxlink仅在第一页中工作正常。对于其他页面,无论我如何单击ajaxlink,它都会在第一页中更新结果

$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'promotion-facility-grid',
'ajaxUpdate'=>true,
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
    array( 'name'=>'pf_branch', 'value'=>'$data->pfBranch->branch_name'),
    array( 'name'=>'pf_category', 'value'=>'$data->pfCategory->pc_name'),
    array( 'name'=>'pf_photo', 'type' => 'raw', 'value'=>'CHtml::image(Yii::app()->baseUrl . "/images/facility/" .$data->pf_photo, "", array("width"=>"150px"))'),
    'pf_name',
    array(
        'name'  => 'pf_main_view',
        'htmlOptions'=>array('style'=>'text-align: center'),
        'value' => 'CHtml::ajaxLink("<span id=\'MV$data->pf_id\'>$data->pf_main_view</span>", array("promotionFacility/Ajaxcontent", "id"=>$data["pf_id"]),array("update" => "#MV$data->pf_id"))',
        'type'  => 'raw',
    ),
    /*
    'pf_price',
    'pf_currency',
    'pf_link',
    'pf_status',
    */
    array(
        'class'=>'CButtonColumn',
        'template'=>'{update}{delete}',
        'buttons'=>array
        (
            'update' => array
            (
                'label'=>'update',
                'url'=>'Yii::app()->createUrl("promotionFacility/updatepanel", array("id"=>$data->pf_id,"view"=>$data->pf_view,"branch"=>$data->pf_branch))',
            ),
        ),
    ),
),

我错过了什么?这与
ajaxupdate
afterajaxupdate
有关吗?

是的,您错过了
afterajaxupdate()
。您正在加载网格,但不更新事件

我建议:

array(
        'name'  => 'pf_main_view',
        'htmlOptions'=>array('style'=>'text-align: center'),
        'value' => function($data){
                       return CHtml::link("<span id='MV$data->pf_id'>$data->pf_main_view</span>","",array("onclick"=>"js:ajax_function(".$data->pf_id.")")),
        },
        'type'  => 'raw',


    ),

在这种情况下,您不需要手动执行afterAjaxUpdate()和绑定事件。

这不仅仅是示例代码:其中存在sql注入漏洞。@Lennartvd我可以知道如何改进查询吗?您应该转义查询中直接使用的任何变量,甚至使用参数化查询。既然您使用的是Yii,为什么不将Yii-DAO与标准db组件一起使用呢。查看此页面。整页都读得很好,但第6章(绑定参数)特别关注这一点。如果你想在阅读易道之后得到进一步的解释或举例,请告诉我。@Lennartvd。。好啊谢谢我会把文件通读一遍
array(
        'name'  => 'pf_main_view',
        'htmlOptions'=>array('style'=>'text-align: center'),
        'value' => function($data){
                       return CHtml::link("<span id='MV$data->pf_id'>$data->pf_main_view</span>","",array("onclick"=>"js:ajax_function(".$data->pf_id.")")),
        },
        'type'  => 'raw',


    ),
function ajax_function(id){
    $.ajax({
    //your request here
    //id is your parameter from grid
    });
}