繁体   English   中英

Smarty模板中的CodeIgniter函数form_open()

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM