2014-11-06 43 views
1

我在yii2中爲用戶創建了rest api。我可以訪問像「api/web/v1/users」這樣的用戶列表,但問題是它提供的所有列的數據包括密碼,我在yii2文檔中看到它在內部調用「user/index」方法,有沒有什麼辦法可以覆蓋索引這樣的方法?覆蓋Yii2中的默認靜止動作

class UserController extends ActiveController { 
public $modelClass = 'common\models\User'; 
     public function actionIndex(){ 
     //return selected columns here of the user table 
     } 
} 

它仍然給所有用戶列表,我不想要的所有列。請幫忙。

回答

2

在你的情況下,你必須使用fields()方法並覆蓋此方法。如Yii的定義fields()

通過重寫[[YII \基\型號::字段()|字段()]]和/或[[YII \基\型號:: extraFields()| extraFields() ]],你可以指定哪些數據,所謂的領域,在資源可投入其陣列representation.You可以覆蓋字段()來添加,刪除,重命名或重新定義字段

例如:

public function fields() 
{ 
    return [  
     'id','name','username' 
    ]; 
} 

以上方法,告訴yii只顯示id,nameusername字段。所以,密碼永遠不會發送到客戶端。

在要只刪除一個或多個特定領域的情況下,你可以做象下面這樣:

public function fields() 
{ 
    $fields=parent::fields(); 
    unset($fields['password']); 
    return $fields; 
}