通常どおりオブジェクトを作成しても、アクション admin で機能するのに、なぜオブジェクトの作成中に検索引数を使用するのでしょうか?
のようなものid
を作成しながら検索と一緒に送信する次のコードの使用法がわかりませんmodelobject
$model=new ModelName('search&id='.$_GET['id']);
通常どおりオブジェクトを作成しても、アクション admin で機能するのに、なぜオブジェクトの作成中に検索引数を使用するのでしょうか?
のようなものid
を作成しながら検索と一緒に送信する次のコードの使用法がわかりませんmodelobject
$model=new ModelName('search&id='.$_GET['id']);
その引数は、検証のようにシナリオが必要な場所でどのシナリオを使用するかをモデルに指示するモデルシナリオを意味します。ここにドキュメントは言います:
__construct()メソッドpublic void __construct(string $ scenario ='insert')$scenario文字列シナリオ名。このパラメーターの詳細については、CModel::scenarioを参照してください。
そして、ドキュメントに関するCModel::scenario
ドキュメント:
シナリオプロパティpublicstringgetScenario()public void setScenario(string $ value)
このモデルが使用されているシナリオを返します。
シナリオは、検証の実行方法と、大規模に割り当てることができる属性に影響します。
'on'オプションが設定されていないか、現在のシナリオ値が含まれている場合、validate()を呼び出すときに検証ルールが実行されます。
また、属性が現在のシナリオの検証ルールに関連付けられている場合は、属性を大量に割り当てることができます。例外は、関連する属性を安全でないとマークし、大量に割り当てることを許可されていない安全でないバリデーターであることに注意してください。
簡単に言うと、新しいモデルを作成し、シナリオを検索していることを伝えます。
では、モデル内のSearchメソッドに値を渡したいですか?メソッドを呼び出す場合:
$model = new ModelName::model()->search($_GET['id']);
そしてsearch()
、モデルのメソッドで、次のように変更します。
public function search($id){
...
}