Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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 查看如何访问每列的id_Php_Yii - Fatal编程技术网

Php 查看如何访问每列的id

Php 查看如何访问每列的id,php,yii,Php,Yii,我正在使用带有CActiveDataProvider的CGridView。一切正常,但现在我有一个需要显示一个自定义按钮取决于该行的id 我可以添加按钮并使其工作,但我不能根据行id自定义图像。 我可以从示例中看到,当创建url时,我可以通过调用$data->id访问行的id,但是当我尝试对imageURL执行此操作时,它不起作用。我的代码如下: $this->widget('zii.widgets.grid.CGridView', array( 'dataProv

我正在使用带有CActiveDataProvider的CGridView。一切正常,但现在我有一个需要显示一个自定义按钮取决于该行的id

我可以添加按钮并使其工作,但我不能根据行id自定义图像。 我可以从示例中看到,当创建url时,我可以通过调用$data->id访问行的id,但是当我尝试对imageURL执行此操作时,它不起作用。我的代码如下:

$this->widget('zii.widgets.grid.CGridView', array(
            'dataProvider'=>$model->search(),
            'filter'=>$model,
            'columns'=>array(
                    'id',
                    'name',
                    'desc',
                    'created',
                    array(
                            'class'=>'CButtonColumn',
                            'header'=>'Active State',
                            'template'=>'{rank}',
                            'buttons'=>array(
                                    'rank'=>array(
                                            'label'=>'Rank',                                                
                                            'imageUrl'=>$this->getRank($data->id),
                                            'url'=>'Yii::app()->createUrl("users/updateRank", array("id"=>$data->id))',
                                            'options'=>array(
                                                    'ajax'=>array(
                                                            'type'=>'POST',
                                                            'url'=>"js:$(this).attr('href')",                                                               
                                                    ),
                                            ),
                                    ),
                            ),                      
                    ),                      
            ),
    ));
图像URL调用控制器中的函数,该函数返回图像的URL。但是,我无法传递当前记录用户正在单击的id,并且我始终会返回默认图像。 如果我使用$data->id,我会得到一个数据不存在的错误。
如果我使用$this->id,它指的是控制器,我得到的是控制器id。无论如何,我可以得到行的id并将其传递给函数

您似乎缺少单引号:

'imageUrl'=>'$this->getRank($data->id)',
是向前迈出的一步(可能需要做更多的事情才能让自定义函数以这种方式工作)


在CGridView中,您希望为每一行独立运行的任何php代码都必须用引号引起来-如果您使用“裸”php,它将只计算一次,然后每一行的值都将相同。

似乎缺少单引号:

'imageUrl'=>'$this->getRank($data->id)',
是向前迈出的一步(可能需要做更多的事情才能让自定义函数以这种方式工作)


在CGridView中,您希望为每一行独立运行的任何php代码都必须用引号引起来-如果您使用“裸”php,它将只计算一次,然后每一行的值都将相同。

请参见上面的注释。我试图通过CButtonColumn做的是不可能的。 我现在使用的是CDATA列

$this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$model->search(),
        'filter'=>$model,
        'columns'=>array(
                'id',
                'name',
                'desc',
                'created',
                array(
                'class'=>'CDataColumn',
                'header'=>'Active State',                                           
                'type'=>'raw',
                'value'=>'getStatus("$data->id")',
            ),                      
        ),
));
getStatus返回此列的内容,该列包含第一个参数为图像的链接(ajaxLink)

function getStatus($id)
{
    $imagePath="";
    ......... do your check and figure out the image you want to use

    $content ="<div align='middle'>".CHtml::ajaxLink(CHtml::image($imagePath,'Rank', array('title'=>'Rank')),CHtml::normalizeUrl(array('user/rank', 'id'=>$id)), array('type'=>'POST'))."</div>";


    return $content;
}
函数getStatus($id)
{
$imagePath=“”;
……检查并找出您想要使用的图像
$content=”“.CHtml::ajaxLink(CHtml::image($imagePath,'Rank',array('title'=>'Rank')),CHtml::normalizeUrl(array('user/Rank','id'=>$id)),array('type'=>'POST'));
返回$content;
}

请参见上面的评论。我试图通过CButtonColumn做的是不可能的。 我现在使用的是CDATA列

$this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$model->search(),
        'filter'=>$model,
        'columns'=>array(
                'id',
                'name',
                'desc',
                'created',
                array(
                'class'=>'CDataColumn',
                'header'=>'Active State',                                           
                'type'=>'raw',
                'value'=>'getStatus("$data->id")',
            ),                      
        ),
));
getStatus返回此列的内容,该列包含第一个参数为图像的链接(ajaxLink)

function getStatus($id)
{
    $imagePath="";
    ......... do your check and figure out the image you want to use

    $content ="<div align='middle'>".CHtml::ajaxLink(CHtml::image($imagePath,'Rank', array('title'=>'Rank')),CHtml::normalizeUrl(array('user/rank', 'id'=>$id)), array('type'=>'POST'))."</div>";


    return $content;
}
函数getStatus($id)
{
$imagePath=“”;
……检查并找出您想要使用的图像
$content=”“.CHtml::ajaxLink(CHtml::image($imagePath,'Rank',array('title'=>'Rank')),CHtml::normalizeUrl(array('user/Rank','id'=>$id)),array('type'=>'POST'));
返回$content;
}

如果我添加引号,imageurl就会变成“$this->getRank($data->id)”,但是如果我不使用引号,函数会被调用,但我不会;我不知道如何传递变量。我接受你关于引号的观点,但它不起作用。好的,对不起-现在我看到它在“按钮”数组中。手册上说,必须有一个图像url(不是php表达式),所以似乎不可能以这种方式使用CButtonColumn,例如同一个按钮不能有不同的图像(除非您编写一个“更正”它的扩展名)。谢谢kraabus,我再次阅读了文档,您是对的,它被设置为字符串而不是php表达式。因此,我使用了一个CDATA列,它的值atribute是对我的函数的调用,该函数将完整的内容返回到该列,即带有正确链接的图像。谢谢明天将发布完整的解决方案。如果您已将其标记为答案,对于其他有此问题的人,请阅读所有评论。Kraabus的评论指出了我在文档中遗漏的一些东西。请参见下面我编辑的代码。Cheers如果我添加引号,imageurl就会变成“$this->getRank($data->id)”,但是如果我不使用引号,函数会被调用,但我不会;我不知道如何传递变量。我接受你关于引号的观点,但它不起作用。好的,对不起-现在我看到它在“按钮”数组中。手册上说,必须有一个图像url(不是php表达式),所以似乎不可能以这种方式使用CButtonColumn,例如同一个按钮不能有不同的图像(除非您编写一个“更正”它的扩展名)。谢谢kraabus,我再次阅读了文档,您是对的,它被设置为字符串而不是php表达式。因此,我使用了一个CDATA列,它的值atribute是对我的函数的调用,该函数将完整的内容返回到该列,即带有正确链接的图像。谢谢明天将发布完整的解决方案。如果您已将其标记为答案,对于其他有此问题的人,请阅读所有评论。Kraabus的评论指出了我在文档中遗漏的一些东西。请参见下面我编辑的代码。干杯