我最近开始在我的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我从来没有遇到过这个问题。
答案 0 :(得分:2)
解决!
我自动加载了表单助手文件。
$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()}
答案 1 :(得分:0)
查看上面给出的代码,似乎没有发生错误的原因是因为没有加载辅助函数,尽管这可能是其中一个原因。
我认为错误主要是因为您在分隔符{
和}
之间添加了空格。
Smarty中右侧和左侧分隔符的默认值分别为{
和}
。含义:
{form_open('')} // Ok!
{ form_open('') } // Not Ok!
因此,如果您想使用第二个版本,则必须更改右侧和左侧分隔符的智能设置:
$smarty->left_delimiter = '{ ';
$smarty->right_delimiter = ' }';
另外,当你尝试
时{php} echo form_open('login/process'); {/php}
我认为它没有用,因为你正在使用Smarty 3. {Smates 2中已弃用{php}
标签并在Smarty 3中删除。如果你仍想使用{php}
标签,你会必须使用SmartyBC。