Phalcon とメールとテンプレートと
-
Upload
yuhshi -
Category
Engineering
-
view
4.239 -
download
6
Transcript of Phalcon とメールとテンプレートと
![Page 1: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/1.jpg)
Phalcon とメールとテンプレートと
![Page 2: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/2.jpg)
ゆーし (Yuhshi / 晴柳祐志)WEB系の SIer で働いてます。
PhalconPHP やってます。
2008年以来2度目の発表です。
![Page 3: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/3.jpg)
PhalconPHP でメール送信
このフレームワークは
メール送信機能は付属していません。
![Page 4: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/4.jpg)
PhalconPHP でメール送信
送信は Qdmail というライブラリに任せました。
本文の生成は PhalconPHP の
テンプレートエンジン Volt に頼ります。
Volt は自動的に PHP ファイルに変換されます。
![Page 5: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/5.jpg)
本文の生成の話(メール送信そのものはもう話しません!)
![Page 6: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/6.jpg)
$view = new View();// (ここで初期化)$view->name = $name; // テンプレートで使う変数
$view->setRenderLevel( \Phalcon\Mvc\View::LEVEL_ACTION_VIEW);$view->start();// テンプレートが views/mail/mail_template.volt にあるなら
$view->render('mail', 'mail_template');$view->finish();return $view->getContent(); // 本文が返ってくる
![Page 7: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/7.jpg)
$view = new View();画面表示用の View インスタンスを使い回して
メール送信 → 送信完了画面表示
としたら画面が真っ白になりました><
メール送信用にインスタンス生成が必須
![Page 8: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/8.jpg)
地獄の改行問題
![Page 9: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/9.jpg)
改行が増える
改行コードを CRLF にしていたら
改行が増えました。
メールサーバのせいなのかライブラリのせいなのか
は追求していませんが、
LF にしてから送信処理に渡すことで回避。
![Page 10: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/10.jpg)
改行が減る
![Page 11: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/11.jpg)
氏名:{{name}}住所:{{address}}↓
氏名:<?php echo $name; ?>住所:<?php echo $address; ?>↓
氏名:ぴよたろう住所:東京都港区
Volt
PHP
?
![Page 12: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/12.jpg)
![Page 13: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/13.jpg)
?> の直後の改行は、PHP によって取り除かれます。
http://jp.php.net/manual/ja/tutorial.firstpage.php
![Page 14: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/14.jpg)
仕方ないので改行の出力を追加しよう
(´・ω・`)
![Page 15: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/15.jpg)
volt で改行文字を追加してみよう
{{“\n”}}
![Page 16: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/16.jpg)
氏名:{{name}}{{“\n”}}住所:{{address}}{{“\n”}} Volt
![Page 17: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/17.jpg)
氏名:{{name}}{{“\n”}}住所:{{address}}{{“\n”}}↓
氏名:<?php echo $name; ?><?php echo ‘\n’; ?>住所:<?php echo $address; ?><?php echo ‘\n’; ?>↓
氏名:ぴよたろう\n住所:東京都港区\n
Volt
PHP
mailそのまま><
![Page 18: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/18.jpg)
シングルクォートで囲ってくれるなんて
Volt さん、親切ですね><
![Page 19: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/19.jpg)
volt で改行文字を追加してみよう その2
{{PHP_EOL}}
![Page 20: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/20.jpg)
氏名:{{name}}{{PHP_EOL}}住所:{{address}}{{PHP_EOL}} Volt
![Page 21: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/21.jpg)
氏名:{{name}}{{PHP_EOL}}住所:{{address}}{{PHP_EOL}}↓
氏名:<?php echo $name; ?><?php echo $PHP_EOL; ?>住所:<?php echo $address; ?><?php echo $PHP_EOL; ?>↓
氏名:ぴよたろう住所:東京都港区
Volt
PHP
mail$PHP_EOL という変数は未定義なので、何も echo されない><
![Page 22: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/22.jpg)
Volt で定数を出力する方法はちゃんと用意されてます
![Page 23: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/23.jpg)
constant(定数名)Reads a PHP constant
https://docs.phalconphp.com/ja/latest/reference/volt.html#id21
![Page 24: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/24.jpg)
volt で改行文字を追加してみよう その3
{{constant(PHP_EOL)}}
![Page 25: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/25.jpg)
氏名:{{name}}{{constant(PHP_EOL)}}住所:{{address}}{{constant(PHP_EOL)}} Volt
![Page 26: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/26.jpg)
氏名:{{name}}{{constant(PHP_EOL)}}住所:{{address}}{{constant(PHP_EOL)}}↓
氏名:<?php echo $name; ?><?php echo PHP_EOL; ?>住所:<?php echo $address; ?><?php echo PHP_EOL; ?>↓
氏名:ぴよたろう
住所:東京都港区
Volt
PHP
mail改行された!
![Page 27: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/27.jpg)
やったね!!
![Page 28: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/28.jpg)
おまけ 1
![Page 29: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/29.jpg)
他の文字は自由に出せないの(´・ω・`)?
![Page 30: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/30.jpg)
Volt の中に PHP そのまま書けるよ(`・ω・´)
![Page 31: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/31.jpg)
volt で改行文字を追加してみよう その4<?php echo “\n”; ?>
![Page 32: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/32.jpg)
氏名:{{name}}<?php echo “\n”; ?>住所:{{address}}<?php echo “\n”; ?>↓
氏名:<?php echo $name; ?><?php echo “\n”; ?>住所:<?php echo $address; ?><?php echo “\n”; ?>↓
氏名:ぴよたろう
住所:東京都港区
Volt
PHP
mailやっぱり改行された!
![Page 33: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/33.jpg)
おまけ 2その他 Volt のトラップ
![Page 34: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/34.jpg)
is not empty
![Page 35: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/35.jpg)
{% if name is not empty %}
↓
<?php if ($name == !$empty) { ?>
name is empty で empty(name) になるが、
name is not empty で !empty(name) にならない
if not (name is empty) にする。
Volt
PHP
![Page 36: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/36.jpg)
配列のメソッドを呼べない
![Page 37: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/37.jpg)
{{ array[‘piyo’].fly() }}
↓
<?php echo ($array[‘piyo’])->fly(); ?>
$array[‘piyo’]->fly() なら問題ないが
なぜかかっこがついて、syntax error になる。
一度別の変数に代入して回避する。
Volt
PHP
![Page 38: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/38.jpg)
まとめ
![Page 39: Phalcon とメールとテンプレートと](https://reader031.fdocuments.net/reader031/viewer/2022012319/5878f5af1a28ab49608b5581/html5/thumbnails/39.jpg)
Volt の挙動が変だと思ったら
変換後の PHP ファイルを確認しましょう!
PhalconPHP 楽しいよ!!!
(時たま闇に踏み込んじゃうけど……w)
まとめ