[英]CodeIgniter function form_open() in Smarty template
我最近开始在我的CodeIgniter项目中使用Smarty模板系统。 一切正常,我能够回应字符串和日期。 但现在我遇到'form_open()'函数的问题。
view_login.tpl
<form class="contact-form" action="login/process" method="post">
<div class="row">
<div class="form-group">
<label for="username">USERNAME</label>
<input type="text" class="form-control" id="username" placeholder="Enter username">
</div>
<div class="form-group">
<label for="password">PASSWORD</label>
<input type="password" class="form-control" id="password" placeholder="Enter Password">
</div>
<button type="submit" class="btn btn-flat flat-color">LOGIN</button>
<button type="button" class="btn btn-flat pull-right">Forgot your password?</button>
</div>
</form>
只要我替换HTML标记,视图就不再加载。 由于跨站点请求伪造(CSRF),我需要form_open()。
到目前为止,我已经尝试过:
{ form_open('login/process') }
{ form url='login/process' }
{{ form_open('login/process') }}
{php} echo form_open('login/process'); {/php}
其他人有同样的问题或知道如何解决这个问题? 没有Smarty我从来没有遇到过这个问题。
解决了!
我自动加载了表单助手文件。
$autoload['helper'] = array('url', 'form');
然后我使用以下代码:
{form_open('login/process')}
<div class="row">
<div class="form-group">
<label for="username">USERNAME</label>
<input type="text" class="form-control" id="username" placeholder="Enter username">
</div>
<div class="form-group">
<label for="password">PASSWORD</label>
<input type="password" class="form-control" id="password" placeholder="Enter Password">
</div>
<button type="submit" class="btn btn-flat flat-color">LOGIN</button>
<button type="button" class="btn btn-flat pull-right">Forgot your password?</button>
</div>
{form_close()}
看看上面给出的代码,似乎没有发生错误的原因是因为没有加载辅助函数,尽管这可能是其中一个原因。
我相信错误主要是因为你在分隔符{
和}
之间添加了空格。
Smarty中右侧和左侧分隔符的默认值分别为{
和}
。 含义:
{form_open('')} // Ok!
{ form_open('') } // Not Ok!
因此,如果您想使用第二个版本,则必须更改右侧和左侧分隔符的智能设置:
$smarty->left_delimiter = '{ ';
$smarty->right_delimiter = ' }';
此外,当你尝试
{php} echo form_open('login/process'); {/php}
我相信它没有用,因为你正在使用Smarty 3. {php}
标签在Smarty 2中被弃用并在Smarty 3中删除。如果你仍然想使用{php}
标签,你将不得不使用SmartyBC。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.