我有一个常见的功能,我在yii网格视图中将它们用于不同的目的。比如说我的属性是col1和col2。它们都根据我执行不同操作的值调用相同的函数。在返回我的网格视图之前,该函数需要经过数百万个数据。
我在col1中调用函数两次,在col2中调用一次。无论如何,我只能调用该函数一次并将它用于两个属性,这将非常方便吗?对此有任何帮助都会很棒。 谢谢。
array(
'header'=>'Phrase Used',
'htmlOptions'=>array('style'=>'width:10px;text-align:center;'),
'value'=> function($data){
if($data->usedBankPhrase($data->bank_id) == 1) {echo "<span class=\"translated-badge\" title =\"Used \">u</span>";}
else{echo "<span class=\"badge\" style=\"background-color:red !important; padding:2px;\" title =\" Not Used \">nu</span>";}
},
'filter'=>'',
),
//delete button
'remove' => array(
'visible'=>'!$data->usedBankPhrase($data->bank_id);',
'label' => 'Delete Phrase',
'imageUrl'=> Yii::app()->request->baseUrl.'/images/icons/cross.png',
'options'=>array('class'=>'full-bank-delete', 'id'=>'\'remove-banker-\'.$data->bank_id'), //HTML options for the button tag.
),
答案 0 :(得分:1)
模特:
定义属性
public $storedUsedBankPhrase = null;
创建getter:
public function getCalculatedUsedBankPhrase() {
if($this->storedUsedBankPhrase === null) {
$this->storedUsedBankPhrase= $this->usedBankPhrase($this->bank_id);
}
return $this->storedUsedBankPhrase ;
}
在GridView中使用:
'value'=> function($data){
if($data->calculatedUsedBankPhrase == 1) {...