问题
我使用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() }}
答案 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;不适用于我最近的一个项目。