rules 中的 search rule 设定不能影响 search() 的结果

记得之前 rules 中的 search rule 设定会影响到 search 函数的结构,比如在 search rule 中没有 type 这个一项,那么 $criteria->compare(‘member_id’, $this->type) 不会起作用。

现在使用的是svn 中最新的代码,发现这个设定不起作用了。即使我将 search rule 全部删除也丝毫不会影响少 search函数的搜索结果。

你能仔细检查一下么?这意味着即使没有rule,type也能被massive assign了。我们最近没改过这方面的代码。

嗯。确认有这个问题,blog 示例中我将 search rule 全部删掉。filter 同样可以起作用。search 中 $criteria->compare(‘title’,$this->title,true); 修改为 $criteria->compare(‘title’,‘w’,true);同样可以搜索出来 title 含有 w 的数据。

这是因为第一个’required’的rule里也包含了title,而且没有设置’on’选项。这意味着title对所有的scenario(包括search在内)都是safe的。

嗯。确实是这样。

不过有一个问题啊。

一般来说,比如我设置了 type 为 "required",这个 rule 一般都是做数据验证使用。而在 search 中,我要禁止用户对 type 进行搜索。而如果是这样的话,用户同样可以构造 url 实现对 type 进行搜索操作。

qiang 你说可以通过设置 on 来达到目的。这个我没有测试。不过我想,是否可以增加一个参数,设置此 rule 和其他 rule 无任何关系。比如 searhc rule ,只有设定的字段才参与,而不管其他的 rule 设置。

qiang,帮忙再看看这个问题。