このサイトにはプロモーションが含まれます

CakePHPのURL生成で死んだ話

古の技術と呼ばれることも多くなってきたCakePHPの記事です。

CakePHPのマニュアルのせいで時間取られたので、備忘録として残しておきっます。

概要

Commandクラスからメールに添付するURL生成を行いたい。

その際に生成されるURLはHTTPS化されたURLを添付したい。

 

現環境 ↓

  • CakePHP 4.4
  • PHP 8.1

やんやん

プログラマーとしてLEMP環境に主に生息しており、DevOps 的な立ち回りをしながらご飯を食べている当ブログの管理人のやんやんと申します。
最近はTmux使うのを辞めました。

 

困ったこと

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,
]);

 

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

 

Twitterでフォローしよう

読んでみーな
おすすめの記事