用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6139|回复: 14
收起左侧

[HELP] 如何书写带 id 的 form_hidden() ?

  [复制链接]
发表于 2010-11-13 14:27:31 | 显示全部楼层 |阅读模式
手册中有
$data = array(
              'name'  => 'John Doe',
              'email' => 'john@example.com',
              'url'   => 'http://example.com'
            );

echo form_hidden($data);

我希望有包含 id 的,例如在
<input type="hidden" name="name" value="John Doe"  id="myid"/>
发表于 2010-11-14 17:15:53 | 显示全部楼层
我是新手,不要笑我哦。只是我不明白你为什么要给一个隐藏的元素加ID,给人一个看不到的元素加上ID你要做些什么呢。如果非要加ID的话,建议不要使用CI的写法,直接写成HTML代码就好了
发表于 2010-11-15 01:33:48 | 显示全部楼层
本帖最后由 qi_ruo 于 2010-11-15 02:07 编辑

回ls: 给一个隐藏的域加上ID主要还是在使用javascript方便点,
比如使用ajax提交表单时,当然不用id用其他方法获取元素也是可以的。
使用默认的form_hidden()加不了id,可以自己扩展一下
PHP复制代码
 
if ( ! function_exists('form_hidden'))
{
    function form_hidden($name, $value = '', $id = '', $recursing = FALSE)
    {
        static $form;
        if($recursing === FALSE)
        {
            $form = "\n";
        }
        if(is_array($name))
        {
            foreach($name as $field)
            {
                form_hidden($field[0], $field[1], isset($field[2]) ? $field[2] : '', TRUE);
            }
            return $form;
        }
        if(! is_array($value))
        {
            $form .= '<input type="hidden" name="'.$name.'" value="'.form_prep($value, $name).'"'.($id ? ' id="'.$id.'"' : '').' />'."\n";
        }
        else
        {
            foreach($value as $k => $v)
            {
                $key = (is_int($k)) ? '' : $k;
                form_hidden($name.'['.$key.']', $v, $id ? $id.'_'.$k : '', TRUE);
            }
        }
 
        return $form;
    }
}
 
复制代码

使用:
(1)单个
echo form_hidden('name', 'Joe');
<input type="hidden" name="name" value="Joe" />

echo form_hidden('name', 'Joe', 'myid');
<input type="hidden" name="name" value="Joe" id="myid" />

(2)多个
$data = array(
   array('name', 'Joe', 'myid'),
   array('email', 'joe@example.com', 'myemail'),
   array('url', 'http://exmple.com')
);
echo form_hidden($data);
<input type="hidden" name="name" value="Joe" id="myid" />
<input type="hidden" name="email" value="joe@example.com" id="myemail" />
<input type="hidden" name="url" value="http://exmple.com" />

(3)数组
echo form_hidden('name', array('aa', 'bb', 'cc'), 'name');
<input type="hidden" name="name[]" value="aa" id="name_0" />
<input type="hidden" name="name[]" value="bb" id="name_1" />
<input type="hidden" name="name[]" value="cc" id="name_2" />
 楼主| 发表于 2010-11-15 05:47:21 | 显示全部楼层
你很适合写《使用手册》:)

请问上面那个函数加在那里?
发表于 2010-11-15 07:41:54 | 显示全部楼层
回复 3# qi_ruo


    哥们两点还没睡呀?太牛了
发表于 2010-11-15 08:50:49 | 显示全部楼层
可以直接修改system/helpers/form_helper.php里的form_hidden()函数,但修改了源码不太好,最好还是使用扩展,新建 application/helpers/MY_form_helper.php文件,把函数写进去,使用的话,还是老样子,可以参考下文档:http://codeigniter.org.cn/user_guide/general/helpers.html
 楼主| 发表于 2010-11-19 14:47:33 | 显示全部楼层
本帖最后由 julia 于 2010-11-19 15:05 编辑

多谢qi_ruo

将上面的form_hidden保存在application/helpers/MY_form_helper.php
-----------controllers
$this->load->helper('form');
echo " myhidden ".$this->input->post('myhidden');

------------views
start <?php echo form_hidden('myhidden','abc'); ?> end

------------结果?
start nn end
发表于 2010-11-19 15:32:00 | 显示全部楼层
本帖最后由 qi_ruo 于 2010-11-19 15:34 编辑

因为代码里的换行符拷不上来 请把上面代码里的"n" 改为 "\n" 一共有两处 当时没注意 见谅
 楼主| 发表于 2010-11-19 18:09:58 | 显示全部楼层
换了2处
\n
没了nn, 但也没有获得
abc
发表于 2010-11-19 20:07:47 | 显示全部楼层
因为是hidden类型的input, 肯定看不到啊,需要右击->查看源文件查看

本版积分规则