【PHP】Twig 综述

由于在业务中使用twig,我花了不少功夫来查找信息,因此整理了一个命令列表。
※ 由于我注意到仍然有相当多的人查看,如果有推荐的命令,请提出编辑请求,我会尽快反映。

twig 是什么PHP制作的模板引擎。
安装和初步设置可以在以下文章中找到总结:
https://qiita.com/atwata/items/50e84e14b107dd111d71
https://qiita.com/tomk79/items/5ab61b4b24fb80fe8a90

1.大家

安装(使用twigbridge)环境:Laravel 5.5

GitHub – rcrowe/TwigBridge: 将Twig的力量赋予Laravel

如果已经使用了Laravel,只需按照TwigBridge官方的说明执行即可简单完成!由于这是英文,我会提供一些额外的解释。

用Composer进行安装

composer require rcrowe/twigbridge

如果已经安装了composer,您可以使用该命令进行安装。

快速入门首先,我们需要编辑config目录下的app.php文件的两个位置。


'providers' => [
     ...
    /*
     * Package Service Providers...//Laravelに登録する
     */
                TwigBridge\ServiceProvider::class,
],

...

'aliases' => [
    ... 
    /* Package Aliase */ //Twigという名前で簡単に呼び出せるようにする
                'Twig' => TwigBridge\Facade\Twig::class,
],

由于已经完成注册,最后使用artisan命令将twig的配置文件添加进去。

php artisan vendor:publish --provider="TwigBridge\ServiceProvider"

这样就准备工作结束了。

只要在resouse/view目录下创建一个以.twig为扩展名的文件,就可以使用twig格式进行编写。

我将默认的layouts文件夹放在其中,并通过继承这些文件来使用。

继承

{% extends 'ファイルパス' %} 
    • 別ファイルから継承する(複数はNG)

 

    • 親ブロックを子ブロックが上書きする

 

    {% block ブロック名%}〜{% endblock %}

插入

{% include 'ファイルパス'%}
{% include 'aa/aa' with { 'aa' : 'aa' } %} //引数も取れます

留言

{# ここにコメントを書く#}

跨站请求伪造防护措施

{{ csrf_field() }}

HTML文的转义感谢您的提醒,我已进行补充!

其他

{{ 変数 | length }} //文字数
{{ dump() }} //PHPのdumpと一緒

2. 变量写作方式 (xiě zuò shì)

{{ 変数名 }}

※需要注意的是,在条件语句中不需要{{}}(例如:{% if post=”hello” %})

定义的方式

在同一个Twig模板中进行设置

{% set 変数名='value' %}
    • 配列の場合は{% set array = [ A, B ] %}

 

    連想配列は{% set array =  [ key : value ] %}

从控制器等传递

変数:{{ 変数名 }}
配列:{{ 変数名.キー名 }} ※連想配列も可

下面是例子中的一部分内容。


$url = 'URLです';
$post = $this->post_model->getPostArray();
    // 'id' => '1', 'title' => 'タイトル'
return view('post/show',
[
    'url' =>$url, //変数 
    'post' =>$post //配列
];
<p>変数は「{{ url }}」です。</p>
<p>配列は idが{{ post.id }}で、
titleが{{ post.title }}です。</p>

输出结果

変数は「URLです」です。
配列は idが1で、titleがタイトルです。

其他在处理验证错误等固定变量时的书写方式。

input_old('タグの名前') // セッションなどで確認フォーム利用時
errors.first('タグの名前') //バリデーションエラー時

3. 假如 / 如果的情况下

如果的话

{% if 条件式 %}
{% endif %}
    • 通常のif文が上記の書き方で使える

 

    • 条件式内で変数を定義した場合、条件文外では使用不能

 

    • 条件文内では、変数に{{}}はつけない

 

    else文、elseif文、複数条件の場合はandやorも使用可能
{% if 条件式A and 条件式B %}
{% elseif 条件式 %}
{% else %}
{% endif %}

for循环

{% for i = 1 1..100 %}
{% endfor %}
    • iは任意です

 

    連想配列の場合は{% for key, value in 配列名 %}

for循环(用for in来替代)

{% for hoge in array %}
{% endfor %}
    arrayに任意の配列、hogeも任意の名前です

三个操作符

{{ 条件文 ? 処理A : 処理B }}
    条件文が正の時にA、誤の時B

请模仿以下的例子用汉语母语改写:

使用模板和变量的页面

{% extends 'layout/user_default'%}
{% block content %}
{% set title='hello' %}
<div class="sample">
    <h1>{{ title }}</h1>
</div>
{% endblock %}

请用中文以本地语言改述以下内容,只需提供一个选项:

“Can you help me with this task?”

邮件表单(部分内容)

<div class="form-group">
    <label for="f-email">Email address</label>
    <input type="email" name="email" class="form-control" id="f-mail"
     value="{{input_old('email')}}" placeholder="entry@leverages.jp">
     {% if errors.first('email')|length > 0 %}
    <span class="text-danger">{{errors.first('email')}}</span>
    {% endif %}
</div>

请用中文重述以下内容,只需一个选项就可以:

“I am going to the store to buy some groceries.”

公式链接以上 – the above

bannerAds