Smarty模板中的CodeIgniter函数form_open()

时间:2014-04-28 06:49:19

标签: forms codeigniter smarty

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

2 个答案:

答案 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。