Yii2 twig HTML帮助程序功能无法正常工作

时间:2015-11-04 10:01:47

标签: twig yii2

问题

我使用yii2和twig模板引擎。它似乎工作,但我似乎无法使用任何Html助手的方法(yii / helpers / Html)。

我的观点是使用twig扩展来扩展基本布局。 {% extends "@layouts/_base.twig" %}

我包括' yii / helpers / Html'在_base.twig文件中。 {{ use('yii/helpers/Html') }}

我使用{{ html.encode(this.title) }}在标题中呈现页面标题和

{{ html.submitButton('Send Message', {
   'class': 'button button--cta button--expand',
}) | raw }}

尝试在我的视图中渲染一个按钮,但似乎都没有工作,我没有得到任何错误,只是没有渲染。

问题

我是否正确设置了它?在yii2树枝上渲染按钮应该怎么办?使用树枝很新。

代码

index.twig

{% extends "@layouts/_base.twig" %}

{% block layout %}

...

  {% set form = active_form_begin({
    'id' : 'contact-us-form'
  }) %}

...

  <div class="row">
    <div class="medium-8 medium-offset-2 columns">

      {{ form.field(contact_us, 'full_name').textArea([{
        'rows' : 6,
        'placeholder' : 'Let us know if you have any questions...'
      }]).label('Message', {
        'class' : 'label--inline'
      }) | raw }}

      </div>
    </div>
    <div class="row">
      <div class="medium-3 medium-offset-2 columns">

        {{ html.submitButton('Send Message', {
          'class': 'button button--cta button--expand',
        }) | raw }}

      </div>
    </div>

    {{ active_form_end() }}
    </section>
{% endblock %}

_base.twig

{{ use('yii/helpers/Html') }}
{{ use('yii/widgets/ActiveForm') }}
{{ use('yii/web/JqueryAsset') }}

{{ this.beginPage() }}

<!DOCTYPE html>
<html lang="{{app.language}}">

    <head>
        {{ this.head() }}
        <meta charset="{{app.charset}}">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
        <link href='https://fonts.googleapis.com/css?family=Lato:300,400,700,900' rel='stylesheet' type='text/css'>
        {{ html.csrfMetaTags() | raw }}
        {{ register_asset_bundle('www/assets/AppAsset') }}
        <title>{{ html.encode(this.title) }}</title>

    </head>

    <body>
    {{ this.beginBody() }}

    {% block header %}
        {% include "@layouts/components/header.twig" %}
    {% endblock %}

    {% block layout %}
    {% endblock %}

    {% block footer %}
        {% include "@layouts/components/footer.twig" %}
    {% endblock %}

    {{ this.endBody() }}
    </body>
</html>
{{ this.endPage() }}

2 个答案:

答案 0 :(得分:2)

要在树枝模板中使用\ yii / helpers \ Html帮助程序,您需要相应地配置树枝扩展名。这在documentation,附加配置页面中有所介绍。

你需要在配置的'twig'部分中添加'globals'选项(参见'THIS LINE'标记):

对于yiisoft / yii2-twig版本2.1.0:

widget->createCheckBox(SLOT(QString, int), data)

然后在模板中将其用作'html'变量,例如:

Widget::sendCom(QString data, int state)

对于yiisoft / yii2-twig版本2.0.6及更早版本,有旧的语法:

[
    'components' => [
        'view' => [
            'class' => 'yii\web\View',
            'renderers' => [
                'twig' => [
                    'class' => 'yii\twig\ViewRenderer',
                    'cachePath' => '@runtime/Twig/cache',
                    // Array of twig options:
                    'options' => [
                        'auto_reload' => true,
                    ],
 /* *THIS LINE* */  'globals' => ['html' => ['class'=>'\yii\helpers\Html']],
                    'uses' => ['yii\bootstrap'],
                ],
                // ...
            ],
        ],
    ],
]

答案 1 :(得分:1)

根据实际documentation,正确的表格必须是:

    [
    'components' => [
        'view' => [
            'class' => 'yii\web\View',
            'renderers' => [
                'twig' => [
                    'class' => 'yii\twig\ViewRenderer',
                    'cachePath' => '@runtime/Twig/cache',
                    // Array of twig options:
                    'options' => [
                        'auto_reload' => true,
                    ],
                    'globals' => ['html' => ['class'=>'\yii\helpers\Html']], // *THIS LINE*
                    'uses' => ['yii\bootstrap'],
                ],
                // ...
            ],
        ],
    ],
]

我不知道为什么,前者&#34; html&#34; =&gt;&#39; \ yii \ helpers \ html&#39;不适用于我最近的一个项目。