Controller内で使用する場合
Router::urlを使用します。使用する際には Cake\Routing\Router を呼び出しておく必要があります。
use Cake\Routing\Router; $url = Router::url(['controller' => 'Pages', 'action' => 'ogp', 'id' => $id], true);
ホスト名なども含むフルパスのURLにする場合には2番めの引数を true にします。
https://book.cakephp.org/3.0/ja/development/routing.html#id17
View内で使用する場合
echo $this->Url->build([ "controller" => "Pages", "action" => "ogp", "id" => $page->id ], true);
https://book.cakephp.org/3.0/ja/views/helpers/url.html#id1
また、拡張子を指定する場合にはあらかじめ
routes.php に
Router::scope('/', function (RouteBuilder $routes) { $routes->extensions(['json', 'xml', 'html', 'png']);
のように拡張子を指定しておいた上で、
echo $this->Url->build([ "controller" => "Posts", "action" => "list", "_ext" => "json" ]);
のようにして使います。