2013-11-05 13:30:59 2727次浏览 1条回答 0 悬赏 10 金钱

V层 输出 $model->opType->getStateName(2);是可以得到 返回值的.但是给下面这个控件传值之后 就报错
$this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'reimburse-grid',
	'dataProvider'=>$model->search(),
	//'filter'=>$model,
	'columns'=>array(
		'UserID',
		'Time',
		'Type',
		array(
                   'name' =>'Name',
                   'value' =>  '$data->opType->getStateName(3)',


		),
C层

$model = new A();

$model->opType = new B();

B类有方法 getStateName($val);



  • 回答于 2013-11-05 13:51 举报

    应该是你的用法不对。

    你在对应点C里面写一个方法protected function getStateName($data,$row){

    retrun $data->opType->getStateName(3);

    }

    然后再V里面 'value' =>array($this,'getStateName'),试试

    1 条回复
    回复于 2013-11-05 14:19 回复

    确实是用法不对, CGridView控件 接收 $model 数据时,每次他都会查询一次值,但是走的是 m层数据 我在c层对 opType 赋值 但是并没有走c层,所以m层的opType 属性还是原来的值,所以报错,把c层的赋值 移到 m层就可以了 用 afterFind .就可以了.

您需要登录后才可以回答。登录 | 立即注册
ww198787
助理

ww198787

注册时间:2013-10-18
最后登录:2013-12-30
在线时长:10小时10分
  • 粉丝0
  • 金钱0
  • 威望0
  • 积分100

热门问题