保定网站建设,网站推广,网站优化服务,保定专业的PHP网站制作机构!

CakePHP form radio使用方法及radio丢失数据的解决办法

发表于:2009年10月08日 15时  作者:dx_andy

CakePHP有着一系列强大的Helper,比如:Html,Javascript, Form (Form是在1.2后才从Html Helper中分离出来的)。当然您也可以自己写Helper来简化CakePHP项目中对View层的操作。

其中Form(表单)Helper中有一个方法为“radio”,其使用方法如下 View层:

$form->radio($fieldName, $options = array(), $attributes = array());

$fieldName为字段名称,比如:News.title

$options Radio项数组,比如:array(‘1′ => ‘Radio1′)。这样生成的单选按钮名字为Radio1值为1的单选按钮。

$attributes Radio按钮的属性,比如:array(‘legend’ => false):去除Legend边框;array(‘value’ => 1):选中值为1的单选按钮;array(’separator’ => ‘ ’):单选按钮间用空格分隔…

用CakePHP form radio生成的单选按钮很容易造成Radio值丢失,也就是在Post数据的时候,明明选中了某个间选按钮了。可是传过来的数据却是空的。这种情况多发生在用$form->radio多次生成相同FieldName的单选按钮的情况下。

在做一个淘宝网手机的项目中就出现过这种情况。后台管理那里出现的,现在也不便展示,如果您希望看就看看前台吧:http://www.xgto.cn

相应的解决办法:

当使用$form->radio()生成的单选按钮,CakePHP默认会加入一个Hidden域形如:<input type=”hidden” name=”data[News][title]” id=”NewsTitle_” value=”" />

解决办法相对简单,去除第二次,第三次…使用Radio时生成的Hidden域即可。避免生成Hidden域CakePHP并没有提供开关控制(具有研究所知)。

简单的字符串操作去除即可。str_replace或是其它的…

 订阅“PHPLAMP博客”方便及时获取网站内容

PHPLAMP博客是专注于网站建设,搜索引擎研究,网站推广,网站优化的IT博客。

发表一下您对本文的意见