CHtml::beginForm()新特性bug

Yii framework 1.1.1版新加的特性CHtml::beginForm()时,如果用createUrl(‘xxx’,array(‘p1’=>‘1’,‘p2’=>‘2’))来作为action,而method又是get时,会将p1和p2作为隐含域放到表单中,这个非常人性化,但是笔者测试发现该方法在与urlManager一起使用时有可能失效,如果设定urlFormat为path,则CHtml中的normalizeUrl调用controller中的createUrl方法,实际调用了CUrlManager中的createUrl方法,生成的链接中不包含?&等符号,而CHtml::beginForm中判断的依据只是

if(!strcasecmp($method,‘get’) && ($pos=strpos($url,’?’))!==false)

{

foreach(explode('&',substr($url,$pos+1)) as $pair)

可以看出,配合path的urlFormat,这个特性就失效了

PS:不过也许qiang的本意就是如此,因为不使用urlFormat=path的话,每个链接中都有r=controller/action,这个是必然要传递的,而urlformat=path之后,实际上就没有这个必要了。