一、
在定义Model类的$_auto属性时,二维数组里的第二次数组支持第5个元素,该元素用来给callback回调方法和function方法里传递参数,代码中也有如下备注:(3.2的手册中并未写到可以添加额外参数)
// array('field','填充内容','填充条件','附加规则',[额外参数])
使用:
protected $_auto = array(
array('orderno', 'getOrderno', '1', 'callback', array($data1, $data2))
)
二、
如果设置了旧值,调用callback回调方法和function方法自动完成处理时会吧就旧值压入到参数数组中并做第一个参数使用。也就是原来的参数数组会变成这样子:array($oldvalue, $data1, $data2)
不合理性是:值压入了该字段(自动完成)的旧值,而不是整个提交的数组,有时候我们定callback或function 是需要数据表中的另一些字段作为参考值去处理的。如下情景:
分类表
id parentid orderno
1 0 1
2 0 2
3 2 1
4 2 2
我想要在添加一个分类,parentid为2,想要设置orderno为自动完成,规律是相同的parentid下面的分类排序自增,这时就通过parentid来获取目前最大的排序值并加1即可。
目前是获取不到的,不推荐的方法一是改源码:
将:
$args = isset($auto[4])?(array)$auto[4]:array();
if(isset($data[$auto[0]])) {
array_unshift($args,$data[$auto[0]]);
}
改为:
$args = isset($auto[4])?(array)$auto[4]:array();
array_unshift($args,$data); //直接将data数组作为一个参数
也可能是我没有找对方法,大家有更好的方法或解决方案,留言交流
最佳答案