我应该在标准 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 令牌使用表单助手,因为你可以这样做:<input name='<?php echo $this->security->get_csrf_token_name(); ?>' type='hidden' value='<?php echo $this->security->get_csrf_hash(); ?>' />
@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“表单助手”在选择元素上未触发更改事件