古の技術と呼ばれることも多くなってきたCakePHPの記事です。
CakePHPのマニュアルのせいで時間取られたので、備忘録として残しておきっます。
概要
Commandクラスからメールに添付するURL生成を行いたい。
その際に生成されるURLはHTTPS化されたURLを添付したい。
現環境 ↓
- CakePHP 4.4
- PHP 8.1
困ったこと
ControllerやViewでURL生成を行うと現在のoriginを見るのですが、Commandクラスなどoriginを見れないものは明示的にオプションを示さないといけないのがCakePHPの掟です。
今回の目的である、CommandクラスからHTTPS化されたURLを添付するにはどうしたらいいかというと、マニュアルのとおりに、生成時のオプションにHTTPSの指定をする必要がある。
_https true にすると普通の URL から https に変換します。 false にすると、強制的に http になります。
$routes->url([
'controller' => 'コントローラー名',
'action' => 'アクション名',
'_https' => true,
]);
これだけでHTTPSを指定できるのは、便利だなと思った矢先、HTTPSになっていない。
Routerクラスのインポート、スペルミスなどを確認してもHTTPS化ができていない。
どうしてもHTTPS化が必須の要件だった、CakePHP3のマニュアルも読んでみた。
驚きの展開だったのが、Cake3とCake4でオプションの内容が違うことがわかった。
_ssl true にすると普通の URL から https に変換します。 false にすると、強制的に http になります。
以下の形で指定すると今回の目的を達成することができた。
$routes->url([
'controller' => 'Articles',
'action' => 'index',
'_ssl' => true,
]);
枯れた技術を使うのはちょっと手間がかかりますねぇ。