2017-01-25 4 views
0

私はyiiグリッドビューでさまざまな目的に使用する共通の機能を持っています。例えば、私の属性はcol1とcol2です。彼らは、私が異なるアクションを実行する値に基づいて、同じ関数を呼び出します。関数は、何百万というデータを通過してから、グリッドビューに戻る必要があります。yiiグリッドビューで2つの属性の関数を一度呼び出す

ここでは、col1で1回、col2で2回この関数を呼び出しています。とにかく私は関数を一度しか呼び出すことができず、それを両方の属性に使用することができます。これは非常に便利ですか?これに関するどんな助けも素晴らしいでしょう。 ありがとうございます。モデルで

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

ゲッター作成

public $storedUsedBankPhrase = null; 

プロパティを定義します:GridViewの使用では

public function getCalculatedUsedBankPhrase() { 
    if($this->storedUsedBankPhrase === null) { 
     $this->storedUsedBankPhrase= $this->usedBankPhrase($this->bank_id); 
    } 
    return $this->storedUsedBankPhrase ; 
} 

'value'=> function($data){ 
      if($data->calculatedUsedBankPhrase == 1) {... 
+0

をしかし、私はまだ関数を2回呼び出すことに終わりますか? –

+0

@MohanPrasadはい、それは一回計算され、 '$ storedUsedBankPhrase'属性に格納されます。この行を 'if(!$ this-> storedUsedBankPhrase){'から 'if($ this-> storedUsedBankPhrase === null){'に変更し、計算関数がnullを返さないようにしてください。 – Yupik

+0

はいそれをチェックします。 –

関連する問題