1. assa

    No comment

    assa
Changes in body
Source | HTML | Preview
@@ -1,196 +1,200 @@
業務でtwigを使用しているのですが、情報を探すのに一苦労したので
コマンド一覧まとめ。
#twigとは
PHP製のテンプレートエンジン。
インストール〜初期設定は下記記事などでまとめてくださっています
https://qiita.com/atwata/items/50e84e14b107dd111d71
https://qiita.com/tomk79/items/5ab61b4b24fb80fe8a90
##1.全体
###継承
```extends.php
{% extends 'ファイルパス' %} 
```
- 別ファイルから継承する(複数はNG)
- 親ブロックを子ブロックが上書きする
- {% block ブロック名%}〜{% endblock %}
###挿入
```
{% include 'ファイルパス'%}
{% include 'aa/aa' with[ 'aa' : 'aa'] %} //引数も取れます
```
###コメント文
```
{# ここにコメントを書く#}
```
###CSRF対策
```
{{ csrf_field() }}
```
###HTML文のエスケープ
```
{{ html文 | raw }} 
```
その他
```
{{ 変数 | length }} //文字数
{{ dump() }} //PHPのdumpと一緒
```
##2.変数
書き方
```
{{ 変数名 }}
```
※ただし条件式の中では{{}}は不要。(例:{% if post="hello" %})
##定義方法
###①同じTwig内で設定する
```
{% set 変数名='value' %}
```
- 配列の場合は{% set array = [ A, B ] %}
- 連想配列は{% set array =  [ key : value ] %}
###②Contorollerなどから渡す
```
変数:{{ 変数名 }}
配列:{{ 変数名.キー名 }} ※連想配列も可
```
▼例 (部分抜粋)
```app/Controllers/PostController.php
$url = 'URLです';
$post = $this->post_model->getPostArray();
// 'id' => '1', 'title' => 'タイトル'
return view('post/show',
[
'url' =>$url, //変数 
'posr' =>$post //配列
];
```
```resouse/view/post/show.twig
<p>変数は「{{ url }}」です。</p>
<p>配列は idが{{ post.id }}で、
titleが{{ post.title }}です。</p>
```
出力結果
```
変数は「URLです」です。
配列は idが1で、titleがタイトルです。
```
###その他
バリデーションエラーなど定型変数の時の書き方
```
input_old('タグの名前') // セッションなどで確認フォーム利用時
errors.first('タグの名前') //バリデーションエラー時
```
#3.条件式
if文
```
{% 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 配列名 %}
foreach文( ループ, for in で代用 )
```
{% for hoge in array %}
{% endfor %}
```
- arrayに任意の配列、hogeも任意の名前です
三項演算子
```
{{ 条件文 ? 処理A : 処理B }}
```
- 条件文が正の時にA、誤の時B
#例文
###①テンプレート・変数を使用したページ
```sample.twig
{% extends 'layout/user_default'%}
{% block content %}
{% set title='hello' %}
<div class="sample">
<h1>{{ title }}</h1>
</div>
{% endblock %}
```
 
###②Emailのフォーム(一部抜粋)
```email.twig
<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>
```
 
##公式リンク
https://twig.symfony.com/
+ついでにブログでもまとめています。
+http://fresh-engineer.hatenablog.com/entry/2017/12/03/082649
+
+
以上