如何传递控制器中的参数到模型中 [ 新手入门 ]
请问如何在控制器里传递参数到模型中?谢谢
应该说是如何传递参数到rules规则里某条验证规则的函数中……即:
function rules(){
return array(
array('clomum1','function_1'),
);
}
public function function_1($attribute,$params){
//即在这里,如何能得到控制器中传递过来的参数,谢谢……
}
之所以想把参数传递到rules中的函数,因为我发现,validate()
方法是通过createValidators()
方法,获取rules里面的信息,然后进行验证,所以,如果不把参数传递到这个rules里的函数很简单,但是根本起不到对信息验证的功能了,即save()之前validate()
方法虽然生效,但根本不会对非rules里的方法进行验证…………求解啊
共 6 条回复
-
呵呵,
save()
之前会自动调用validate()
方法,这个我知道,但是如果有这么一种情况呢?这种验证需要在post表单提交之后进行验证,比如文件大小,mime类型等一些需要在服务器端验证的,那肯定要写在Controller里吧?
那么如果验证不能通过,你肯定要返回通不过的信息吧?如果想利用
CActiveForm
默认的错误信息处理,而错误信息的处理方式CActiveForm
的处理方式是检索Rules
里面的验证规则吧?而Rules
里面可以写一个字段利用函数来验证吧?那么此函数需要获取Controller
返回的错误信息吧?对不?那么你是否需要,从
Controller
里面传递值给模型呢?对吧?如果我逻辑上有不对的地方,还请指教,谢谢大家
-
呵呵,我说的这个传递参数就是传递message的错误信息。message错误信息,总不能先写在rules里面吧?因为不同的错误,对应不同的错误信息。
所以我想把这个传递过来啊。。。。。。。
我现在的办法是在Model中定义一个public 属性,然后在控制器中根据错误信息不同,改变public属性的值,然后rules里面的验证函数调用Model里的这个public属性,输出不同的信息。这样可以实现。但总感觉有点繁琐,应该还有更好的办法……因为控制器中改变Model层的public属性值是通过在Model层里面定义了一个函数来实现的,加上rules里面的那个需要验证的函数,就两个函数了,所以感觉繁琐。
rules里面的需要验证的函数的形式难道必须是
function fun_name($attribute,$message){}
这样的形式么?总感觉可以在控制器controller中直接传递参数到这个函数中,但一直无法实现……
guzuomuse
最后登录:2013-05-27
在线时长:0小时0分
- 粉丝0
- 金钱220
- 威望0
- 积分220