我应该在标准 HTML 上使用表单助手吗?

Posted

技术标签:

【中文标题】我应该在标准 HTML 上使用表单助手吗?【英文标题】:Should I use form helpers over standard HTML? 【发布时间】:2013-01-31 01:18:00 【问题描述】:

使用这些类对性能或安全问题有好处吗,因为我们知道 html 应该是纯 HTML。

例子:

在 Codeigniter 框架中:

 echo form_input(array('name' => 'one'));

被称为

<input type="text" name="one"/>

哪个更好?

【问题讨论】:

我倾向于避免使用它们,因为我使用自定义模板系统,它允许我将所有视图文件仅保留为 HTML,使设计人员更容易访问它们。如果您想使用内置在 csrf 令牌中的 codeigniters,那么您将不得不使用表单助手来打开/关闭表单,但除此之外,我猜这主要取决于您自己的偏好。 @Jeemusu 你不需要为 CSRF 令牌使用表单助手,因为你可以这样做:&lt;input name='&lt;?php echo $this-&gt;security-&gt;get_csrf_token_name(); ?&gt;' type='hidden' value='&lt;?php echo $this-&gt;security-&gt;get_csrf_hash(); ?&gt;' /&gt; @cryptic ツ - 希望我早点知道:P 干杯。 【参考方案1】:

复制自 Phil Sturgeon 博客: 额外的抽象层与辅助扩展/覆盖相结合,可以非常轻松地在整个应用程序输出中更改简单的逻辑位,而无需大惊小怪。

为了解释,我将使用一个例子。

<form action="<?php echo site_url('controller/method'); ?>" method="post">
vrs
<?php echo form_open('controller/method');

首先您将看到标准的HTML 方法,其中site_url() 函数用于创建指向表单操作的链接。其次,您会看到form_open() 标签——在这个例子中它也更短,哇!

我想要一种方法在我的所有表单中设置accept-charset="UTF-8",以帮助保留我的所有数据UTF-8 in CodeIgniter。 如果我只使用HTML,那么我将不得不检查我的所有表格并将其添加到自己身上,这将浪费我本可以在酒吧度过的时间。

相反,由于 CodeIgniter 允许您扩展助手,我只是在 application/helpers/MY_form_helper.php 中对包含此逻辑的 form_open() 进行了稍微修改。 因为我使用 PHP 来包装我的有用数据,所以我可以做一个简单的更改并更新我的所有标签。

主要问题是人们正在查看这些 HTML 辅助函数,并将它们视为完全不同的语法。

完整文章请访问:http://philsturgeon.co.uk/blog/2009/12/Why-CodeIgniter-HTML-helper-functions-rock

【讨论】:

【参考方案2】:

这是个好问题。我认为最终归结为个人喜好。就我个人而言,我不喜欢使用表单助手,但我当然可以看到使用它们的好处,如果我正在处理一个大项目,我会尝试使用它们。因为就像 Phil Sturgeon 所说,当您想要对所有表单字段进行站点范围内的更改时,它会容易得多。

虽然我很想看看使用表单辅助函数是否会影响性能。使用 PHP 生成 HTML 肯定比仅仅正常编写 HTML 有性能损失吗?

【讨论】:

以上是关于我应该在标准 HTML 上使用表单助手吗?的主要内容,如果未能解决你的问题,请参考以下文章

Zend Framework 表单、装饰器和验证:我应该回到纯 HTML 吗?

框架助手,它们的用途是什么?

使用 Mobile Safari“表单助手”在选择元素上未触发更改事件

如何为动态生成的内容编写自定义表单助手模板?

CodeIgniter 2.1.3 - 表单助手 - 无法提交数据

在 vuejs 中提交表单,我应该使用表单标签吗?