2014-04-09 77 views
4

我有一個名爲vat_free的字段。所以我的模型創建了一個屬性$vat_free。其值可以是或。Yii框架 - 如何獲得不同的字段值?

我希望我的視圖來顯示沒有,而不是或。我可以這樣做,創建一個像getVatFree()這樣的吸氣劑,但它看起來像一個混亂的解決方案,因爲然後我將有兩個屬性到同一個字段,即使它會用於不同的目的。

那麼我怎樣才能使用只有原來的屬性$vat_free?我不能修改它的getter?

+0

''option value =「1」>是'? – DCoder

回答

3

你可以不喜歡

$vat_free = YES or NO 

但權之前保存這個對象,你會覆蓋對象類beforeSave()方法類似以下內容:

beforeSave(){ 
    if($this->vat_free = YES){ 
     $this->vat_free = 1 
    }else{ 
$this->vat_free = 0; 
    } 
} 

,並覆蓋afterFind()做反向(對於beforeSave( ))翻譯。但是,如果你進行批量保存或檢索,這甚至是混亂的,並且不起作用。

我看到2個解決方案。

  1. 跟隨你所說的getVatFree(),這是OOP封裝的全部目的。
  2. 而不是在db中做1或0,做Y或N值,你可以在兩個地方使用它們沒有問題。
4

創建方法

public function getVatFreeString(){ 
    return $this->vat_free ? 'Yes':'No'; 
} 

是妥善的解決辦法,這不是凌亂。

2

在您的模型中,創建一個僅用於顯示目的的新字段。

class User extends CActiveRecord 
{ 

    public $displayVatFreeFlag; 

    public function rules() { ... } 

    public function afterFind() 
    { 
    $this->displayVatFreeFlag = ($this->vat_free ? 'Yes':'No'); 
    } 
} 

然後,在您的字段中,顯示該字段爲正常。

Vat free : <?php echo $model->displayVatFreeFlag; ?>