即使我们正常创建对象,它也可以在动作管理中运行,那么为什么我们在创建对象时使用搜索参数呢?
我不明白以下代码的用法,这些代码在创建id
时会发送modelobject
以及
$model=new ModelName('search&id='.$_GET['id']);
答案 0 :(得分:4)
该参数意味着模型场景,它告诉模型在需要场景的任何地方使用哪种场景,如验证。这里的文件说:
__ construct()方法public void __construct(string $ scenario ='insert')$场景字符串场景名称。看到 CModel :: scenario以获取有关此参数的更多详细信息。
关于CModel::scenario
文件的文档:
方案属性 public string getScenario()public void setScenario(string $ value)
返回使用此模型的方案。
场景会影响验证的执行方式以及可以使用的属性 被大规模分配。
如果调用validate(),则将执行验证规则 'on'选项未设置或包含当前方案值。
如果属性与a关联,则可以大量分配属性 当前方案的验证规则。请注意,例外情况是 不安全的验证器,将关联的属性标记为不安全 并且不允许大规模分配。
简单地说这意味着创建新模型并告诉它我们正处于搜索场景中。
答案 1 :(得分:2)
所以你想将值传递给模型中的Search方法吗?调用方法时:
$model = new ModelName::model()->search($_GET['id']);
在模型的search()
方法中,修改如下:
public function search($id){
...
}
答案 2 :(得分:0)
如果您在视图中使用zii.widgets.grid.CGridView
,则可以将参数传递为
'dataProvider'=>$model->search($id)
并在模型中的搜索方案中接受此参数。