Smarty模板中的CodeIgniter函数form_open()

问题描述 投票:0回答:2

我最近开始在我的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我从来没有遇到过这个问题。

forms codeigniter smarty
2个回答
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()}

0
投票

看看上面给出的代码,似乎没有发生错误的原因是因为没有加载辅助函数,尽管这可能是其中一个原因。

我相信错误主要是因为你在分隔符{}之间添加了空格。

Smarty中右侧和左侧分隔符的默认值分别为{}。含义:

{form_open('')} // Ok!
{ form_open('') } // Not Ok!

因此,如果您想使用第二个版本,则必须更改右侧和左侧分隔符的智能设置:

$smarty->left_delimiter = '{ ';
$smarty->right_delimiter = ' }';

此外,当你尝试

{php} echo form_open('login/process'); {/php}

我相信它不起作用,因为你正在使用Smarty 3.在Smarty 2中弃用{php}标签并在Smarty 3中删除。如果你仍然想使用{php}标签,你将不得不使用SmartyBC。

© www.soinside.com 2019 - 2024. All rights reserved.