デフォルト値の設定が機能しないのはなぜですか?シナリオによってデフォルトのモデル値を設定する
class QueryController extends ActiveController
{
public $modelClass = 'app\models\Query';
public $createScenario = 'restCreate';
public $updateScenario = 'restUpdate';
私はデフォルトcreateAction
メソッドをオーバーライドしない:
は、ここに私のコントローラです。
モデル:私は残りのコントローラを介して新しいエントリを作成すると、
class Query extends ActiveRecord
{public function rules()
{
return [
[['userId', 'name', 'created', 'isOneTime', 'isArchived', 'settings', 'engine'], 'required'],
[['userId'], 'integer'],
[['name', 'settings', 'schedule'], 'string'],
[['created', 'lastUpdate'], 'safe'],
[['isOneTime', 'isArchived', 'isApi', 'valid'], 'boolean'],
[['state', 'engine'], 'string', 'max' => 160],
[['isApi'], 'default', 'value'=> false],
[['isApi'], 'default', 'value'=> true, 'on' => 'restCreate']
];
}
public function scenarios()
{
$scenarios = parent::scenarios();
$scenarios['restCreate'] = ['name', 'state', 'isApi', 'isOneTime', 'settings', 'schedule'];
$scenarios['restUpdate'] = ['name', 'state', 'isOneTime', 'settings', 'schedule' ];
return $scenarios;
}
それがデフォルトでisApi = true
を設定する必要がありますが、それは、このような方法では動作しません。シナリオに応じてデフォルトのモデル値を割り当てるにはどうすればよいですか?
フィールドが空の場合、モデルルールのデフォルト値が適用されます。私はそれがフィールドをあらかじめ埋めるとは思わない。 –
@ck_arjun、大丈夫ですので、フォームに投稿し、 '$ this-> isApi = '''のように設定してください。 –