我正在尝试使用TbEditableColumn
和类型select
来设置下拉菜单。
我需要的下拉菜单由我调用的函数填充。
这适用于基本情况。但是对于另一列,下拉值取决于它所在的行(grid-view
)。
因此,例如我想调用以填充下拉并传递当前数据的id的函数是:
$model->getPulldownValues($data->id)
但是这会引发一个错误,即未定义变量$data
。有趣的是,在可编辑数组之外,我可以按预期使用$ data。
见下面的例子:
有什么想法吗?
$this->widget('bootstrap.widgets.TbExtendedGridView', array(
'type' => 'striped bordered',
'id'=>'order-image-grid',
'dataProvider'=>$model->search(),
'ajaxUpdate'=>true,
'template' => "{items}\n{extendedSummary}",
'rowCssClassExpression'=>'"FMDBGridColumn".$data->order_error',
'columns'=>array(
array(
'class' => 'bootstrap.widgets.TbEditableColumn',
'name' => 'streets',
'htmlOptions'=>array('width'=>'150'),
'value' => 'CHtml::value($data, "street")',
'editable' => array(
'type' => 'select',
'source' => CHtml::listData($model->availableStreets($data->id), 'id', 'street'),
'url' => $this->createUrl('cities/editable'),
'placement' => 'right',
)
),
),
));
答案 0 :(得分:1)
尝试更改方法" availableStreets"进入吸气剂,例如:
public function getAvailableStreets()
{
// we don't need to send id as parameter of method,
// we can get it directly from model
// e.g.: $id = $this->id;
//
// put your code here
}
然后,在小部件中,使用属性
$model->availableStreets
而不是方法
$model->availableStreets($id)
你也可以放 CHtml :: listData()进入你的getter并使用
'source' => 'availableStreets',
而不是
'source' => CHtml::listData($model->availableStreets($data->id), 'id', 'street'),
答案 1 :(得分:0)
您必须考虑'value' => 'CHtml::value($data, "street")',
中的 $ data 是指$model->search()
提供的模型对象,但网格外的$data
是不同的(你还没有分享那是什么)。