CUBE3の配列に入った変数の存在確認
isset, isnull、この辺の変数が使えれば本当は楽だけど、Twigの仕様から気の利いたコードが見つからない。
今回自分がハマったのは、管理画面 > 受注検索一覧ページのOrderの変数内の顧客IDの存在有無。
要は以下
{% for Order in pagination %} <tr id="result_list_main__item--{{ Order.id }}"> <td id="result_list_main__id_check--{{ Order.id }}" class="text-center"><input type="checkbox" id="check-{{ Order.id }}" data-id="{{ Order.id }}" name="ids{{ Order.id }}"></td> <td id="result_list_main__order_date--{{ Order.id }}">{{ Order.order_date|date_format }}</td> ・ ・ ・ ・ </tr> {% endfor %}
Orderの中に顧客IDが存在するかを判定したい。
ただ、変数自体は既存のpaginationの中に存在している物で、Order自体はページにレンダリングする為のpaginationに集約されてしまっている。
会員の場合は Order.Customerの中に顧客情報が配列になって入っている。ただ非会員購入と言う事もあるので、Customerがnullでセットされている受注もあると言う所だ。
この場合、is_arrayなんかが使えれば便利なのだが、コードが無いので利用したのは以下
{% if Order.Customer.id is defined %} ある {% else %} ない {% endif %}
definedで値が定義されているかどうかを確認して、あれば処理を書くと言う形で対処した。
会員か非会員かと言う部分でメールのテンプレートを変えたいと言う要望が有り、一覧で表示させる為に実装。