1
我在Yii2控制器延伸ActiveController是RESTful的,我可以使用PUT方法更新它確定。不過,我想設置一些屬性爲不安全的,因爲我不希望它們可以更新。如何在RESTful Yii2中將屬性設置爲不安全?
閱讀中,我想我可以做這樣的事情在模型中的一些規則不同的例子:
[['first_name','last_name','!password'], 'safe', 'on' => 'update'],
但是這並不妨礙密碼被更新。
於是我找到了場景()方法,並認爲這應該工作:
public function scenarios()
{
return [
'default' => ['*'], // Also tried without this line
'update' => ['first_name','last_name','!password'],
];
}
但阻止所有屬性得到更新。
沒有人有任何其他建議?
感謝您的答覆。由於控制器將ActiveController擴展爲RESTful,因此我沒有actionUpdate()方法,因爲RESTful Yii在後臺處理此操作。我希望不必爲了控制可以分配哪些值而重寫更新方法。 – Dubby
@Dubby在你的例子中,你已經使用了基於場景的驗證規則。您必須定義在加載和保存之前必須明確使用哪個場景。你可以做什麼:設置[ActiveController :: $ updateScenario(http://www.yiiframework.com/doc-2.0/yii-rest-activecontroller.html#$updateScenario-detail),或者你可能會覆蓋[UpdateAction](HTTP ://www.yiiframework.com/doc-2.0/yii-rest-updateaction.html)。但覆蓋所述控制器,以改變作用是很平常([DOC])(http://www.yiiframework.com/doc-2.0/guide-rest-controllers.html#customizing-actions)。 – robsch