2012-06-19 3 views
5

콘솔 셸 (결국 cron 작업)을 통해 CakePHP 2.1.2에서 전자 메일을 보내려고합니다. 내가 보내고있는보기는 응용 프로그램 웹 페이지로 돌아가는 링크가있는 달력입니다. 내가 발견 한 문제는 urls에 올바른 경로가 포함되어 있지 않으며 콘솔을 사용하고 있기 때문에 요청 객체가 없기 때문에 내가 읽은 것에서입니다.CakePHP 2.1.2 콘솔 셸에서 전체 URL 만들기

http://localhost/ReportMonitor/scheduledReports/index/show_date:2012-06-10/result:GOOD 

을하지만 이메일에 나는이 얻을 동일한 코드를 사용하여 : : 내 브라우저에서보기를 만드는 경우 예를 들어,이 같은 링크를 얻을

가까운
http://localhost/scheduledReports/index/show_date:2012-06-10/result:GOOD 

,하지만 시가 .

어딘가에 앱 하위 디렉토리에 코드를 설정할 수 있지만 아직 작동하지 않는 항목을 찾을 수없는 전역을 찾으려고했습니다.

$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을 보내는)입니다 생각하지만 난 단지 그것을 알아낼 수 없습니다 : 링크는 다음과 같이 코드에 의해 만들어집니다.

감사

답변

3

은 링크

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

full_base 옵션을 사용하여베이스 URL로 bootstrap.php에서 FULL_BASE_URL 일정을 설정

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

것은 당신이 경로를 사용하는 경우 앱에서 셸에 라우팅을 포함해야합니다.

App::uses('Router', 'Routing'); 
config('routes'); 
+1

이것은 도움이 될 수 있습니다. http://stackoverflow.com/a/13660262/1868660 –