julia 发表于 2010-11-13 14:27:31

如何书写带 id 的 form_hidden() ?

手册中有
$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"/>

272785703 发表于 2010-11-14 17:15:53

我是新手,不要笑我哦。只是我不明白你为什么要给一个隐藏的元素加ID,给人一个看不到的元素加上ID你要做些什么呢。如果非要加ID的话,建议不要使用CI的写法,直接写成HTML代码就好了

qi_ruo 发表于 2010-11-15 01:33:48

本帖最后由 qi_ruo 于 2010-11-15 02:07 编辑

回ls: 给一个隐藏的域加上ID主要还是在使用javascript方便点,
比如使用ajax提交表单时,当然不用id用其他方法获取元素也是可以的。
使用默认的form_hidden()加不了id,可以自己扩展一下

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, $field, isset($field) ? $field : '', 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" />

julia 发表于 2010-11-15 05:47:21

你很适合写《使用手册》:)

请问上面那个函数加在那里?

a123123 发表于 2010-11-15 07:41:54

回复 3# qi_ruo


    哥们两点还没睡呀?太牛了

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

julia 发表于 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

qi_ruo 发表于 2010-11-19 15:32:00

本帖最后由 qi_ruo 于 2010-11-19 15:34 编辑

因为代码里的换行符拷不上来 请把上面代码里的"n" 改为 "\n" 一共有两处 当时没注意 见谅

julia 发表于 2010-11-19 18:09:58

换了2处
\n
没了nn, 但也没有获得
abc

qi_ruo 发表于 2010-11-19 20:07:47

因为是hidden类型的input, 肯定看不到啊,需要右击->查看源文件查看
页: [1] 2
查看完整版本: 如何书写带 id 的 form_hidden() ?