在yii网格视图中为两个属性调用该函数一次

时间:2017-01-25 12:03:09

标签: php function gridview yii yii2

我有一个常见的功能,我在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.
                    ),

1 个答案:

答案 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) {...