2013年4月5日星期五

thinkphp RBAC里面的_before_insert() bug

无论是升级到3.1还是3.1.2,2.1里面默认的 _before_insert() _before_add() 里面原有的输出,包括其自带的rabc例子 的 上级组 的内容都显示不出来,大家发现过么?
系统会检测当前操作是否具有前置和后置操作,如果存在就会按照顺序执行,例如,我们在UserAction类里面定义了_before_insert() 和 _after_insert() 操作,那么执行User模块的insert操作的时候,会按照顺序执行下面的操作: 

_before_insert

insert

_after_insert 

特殊情况是,当前的add操作并没有定义操作方法,而是直接渲染模板文件,那么如果定义了_before_add 和 _after_add 方法的话,依然会生效,也会按照这个顺序来执行add操作。真正有模板输出的可能仅仅是当前的add操作,前置和后置操作一般情况是没有任何输出的。前置和后置操作的方法名是在要执行的方法前面加 _before_和_after_,例如: 


解决方法为手动定义函数。如
function insert(){
     $this->display();
}

没有评论:

发表评论