CakePHPのshellでHtmlヘルパーを利用しURLを生成する
CakePHPのシェルでHtmlヘルパを使ってHtmlHelper::url()を呼び出して、URLを取得する方法です。
CakePHP1.3をベースに書いています(CakePHP2の場合はApp::uses()を使うなどすればいけると思います)。
<?php App::import('Helper', 'Html'); App::import('Core', 'Router'); class HelloShell extends Shell { public function startup() { include CONFIGS . 'routes.php'; //(1) $this->Html = new HtmlHelper(); //(2) } public function main() { echo $this->Html->url(array('controller'=>'posts', 'action'=>'index')); } }
Htmlヘルパのurl()メソッド中ではRouterクラスが利用されているため、最初にApp::importでHtmlヘルパとRouterクラスを読み込みます。
次に、シェルの場合はconfig/routes.phpで定義したものが自動で読み込まれないため、これをソースコードの(1)のようにして読み込みます。これを忘れるとうまくURLが生成できないので注意!
最後に、(2)のようにしてHtmlHelperクラスのインスタンスを生成します。
Htmlヘルパを使った独自のMyHtmlヘルパみたいなのを使いたい場合は、下記のようにすればOK
<?php App::import('Helper', 'MyHtml'); App::import('Helper', 'Html'); App::import('Core', 'Router'); class HelloShell extends Shell { public function startup() { include CONFIGS . 'routes.php'; $this->MyHtml = new MyHtmlHelper(); $this->MyHtml->Html = new HtmlHelper(); } public function main() { echo $this->MyHtml->myUrl(array('controller'=>'posts', 'action'=>'index')); } }