5

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を送信する)だと思いますが、理解できません。

ありがとう

4

1 に答える 1

3

full_baseリンクのオプションを使用する

echo $this->Html->link(array(
    'controller' => 'posts', 'action' => 'index', 'full_base' => true
));

そして、FULL_BASE_URL定数をbootstrap.phpbase-urlに設定します。

define('FULL_BASE_URL', 'http://www.domain.com/subdir');

アプリにルートを使用している場合は、シェルにルーティングを含める必要があります。

App::uses('Router', 'Routing');
config('routes');
于 2012-07-27T08:36:16.847 に答える