2

即使我们正常创建对象,它也可以在操作 admin 中工作,那么为什么我们在创建对象时使用搜索参数?

我不明白以下代码的用法,这些代码id在创建modelobject类似内容时与搜索一起发送

$model=new ModelName('search&id='.$_GET['id']);
4

3 回答 3

4

该参数意味着模型场景,它告诉模型在任何需要场景的地方使用哪个场景,比如验证。这里的文档说:

__construct() 方法 public void __construct(string $scenario='insert') $scenario 字符串场景名称。有关此参数的更多详细信息,请参阅 CModel::scenario。

以及有关文档的CModel::scenario文档:

场景属性public string getScenario() public void setScenario(string $value)

返回使用此模型的场景。

场景会影响验证的执行方式以及可以大量分配哪些属性。

如果未设置 'on' 选项或包含当前场景值,则在调用 validate() 时将执行验证规则。

如果属性与当前场景的验证规则相关联,则可以大量分配属性。请注意,一个异常是不安全的验证器,它将关联的属性标记为不安全并且不允许被大量分配。

简单地说,这意味着创建新模型并告诉它我们正在搜索场景中。

于 2012-11-06T07:25:45.217 回答
2

因此,您想将值传递给模型中的 Search 方法吗?调用方法时:

$model = new ModelName::model()->search($_GET['id']);

并在search()模型中的方法中,修改如下:

public function search($id){
    ...
}
于 2012-11-06T07:25:40.520 回答
0

如果您zii.widgets.grid.CGridView在视图中使用,则可以将参数传递为

'dataProvider'=>$model->search($id)并在模型中的搜索场景中接受此参数。

于 2013-09-04T10:39:55.837 回答