CakePHP 2.1.2からコンソールシェル経由で(最終的にはcronジョブで)メールを送信しようとしています。私が送信しているビューは、アプリケーションのWebページに戻るリンクを含むカレンダーです。私が見つけた問題は、URLに正しいパスが含まれていないことです。これは、コンソールを使用しているため、リクエストオブジェクトがないためです。たとえば、ブラウザでビューを作成すると、次のようなリンクが表示されます。
http://localhost/ReportMonitor/scheduledReports/index/show_date:2012-06-10/result:GOOD
しかし、同じコードを使用した電子メールで、私はこれを取得します:
http://localhost/scheduledReports/index/show_date:2012-06-10/result:GOOD
これは近いですが、葉巻はありません。
appサブディレクトリをハードコーディングするためにどこかに設定できるグローバルを見つけようとしていますが、まだ機能するものは見つかりませんでした。リンクは次のようなコードで作成されます。
$newUrl = array();
$newUrl['controller'] = 'scheduledReports';
$newUrl['action'] = 'index';
$newUrl['url'] = array();
foreach ($data as $key => $value) {
$newUrl['show_date'] = "$year-$month-$key";
$newUrl['result'] = 'GOOD';
$data[$key]['num_complete'] = $this->Html->link(__('Complete: ') . $value['num_complete'], Router::reverse($newUrl, true), array('class' => 'green'));
これは一般的な機能(コンソールで生成された電子メールで有効なURLを送信する)だと思いますが、理解できません。
ありがとう