在 Codeigniter 中设置表单的“名称”属性

Posted

技术标签:

【中文标题】在 Codeigniter 中设置表单的“名称”属性【英文标题】:Setting the 'name' property of a Form in Codeigniter 【发布时间】:2011-09-18 16:55:19 【问题描述】:

参考http://codeigniter.com/user_guide/helpers/form_helper.html 的 Codeigniter 用户指南,我似乎无法弄清楚如何使用 CI 的表单助手设置表单的“名称”属性。传入数组只能设置'id'。不传数组给form_open()函数可以设置表单的'name'吗?

【问题讨论】:

【参考方案1】:

你可以用这个方法

$attributes = array('name' => 'myform');

echo form_open('email/send', $attributes);

【讨论】:

我不知道为什么我的答案被否决了...因为 w3school 还使用带有表单标签的 name 属性..w3 school example 我没有对它投反对票,但我认为它已经完成,因为您的解决方案使用了一个数组,并且 OP 要求使用非数组解决方案,但我可能对 downvoter 的意图有误.. @Damien Pirsy,OP 说:“只有 'id' 可以通过传入数组来设置。”但事实并非如此。如果他的问题是基于 name 属性可能无法使用数组传递给表单助手的前提,那么这是一个无关紧要的问题,因为 cchameed 已经证明可以使用数组将名称传递给表单助手。我刚刚在我的表单中使用了这种方法,现在我看到了一个以前没有的名称属性。 也许我错了,但Can the 'name' of the form be set without passing an array to the form_open() 表示 OP 不想传递数组,句号。我认为这个问题具有误导性 对,他这么问。但他似乎是在使用数组无法完成的前提下问的,现在不是这样(可能是两年前他问这个问题的时候)。【参考方案2】:

表单的 name 属性实际上已被弃用:

17.3 表单元素

[....]

name = cdata [CI]
    This attribute names the element so that it may be referred to

来自样式表或脚本。笔记。 此属性已包含在 向后兼容性。应用 应该使用 id 属性来 识别元素。

来源:W3.org

如果你真的想通过它,恐怕你别无选择,只能使用你想避免的数组,正如你在手册中阅读的那样。

【讨论】:

很高兴知道!只是想知道使用'name'和'id'之间是否有任何重大区别,也许'name'仍然用于旧版浏览器? @Nyxynyx 听起来就是这样!无论如何,ID 更实用,因为您可以轻松附加 js 处理程序、css 类等。此外,在
中没有什么可以从服务器端检索(当然不是输入),所以我不明白为什么要使用它;)
我想知道为什么 name 属性会被弃用,而在 javascript 中将表单名称称为关联数组元素非常有用:document.forms['myform'] 为什么不是更直接直接的document.getElementById('myformid')?你为什么反对?

以上是关于在 Codeigniter 中设置表单的“名称”属性的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter 仅在某些页面使用 CSRF 保护

在 codeigniter 中设置基本 url

在 CodeIgniter 4.0.2 中设置动态基本 URL

在 Codeigniter 中设置跨域

为啥我们要在 CodeIgniter 中设置 $system_path?

在 CodeIgniter 3 中设置数据库连接超时