CakePHPのURL生成で死んだ話

B!

古の技術と呼ばれることも多くなってきた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 になります。

URL の生成

$routes->url([
    'controller' => 'コントローラー名',
    'action' => 'アクション名',
    '_https' => true,
]);

 

これだけでHTTPSを指定できるのは、便利だなと思った矢先、HTTPSになっていない。

Routerクラスのインポート、スペルミスなどを確認してもHTTPS化ができていない。

 

どうしてもHTTPS化が必須の要件だった、CakePHP3のマニュアルも読んでみた。

驚きの展開だったのが、Cake3とCake4でオプションの内容が違うことがわかった。

_ssl true にすると普通の URL から https に変換します。 false にすると、強制的に http になります。

URL の生成

 

以下の形で指定すると今回の目的を達成することができた。

$routes->url([
    'controller' => 'Articles',
    'action' => 'index',
    '_ssl' => true,
]);

 

枯れた技術を使うのはちょっと手間がかかりますねぇ。

 

最新の記事はこちらから