2012-06-19 10 views
5

Estoy intentando enviar un correo electrónico desde CakePHP 2.1.2 a través del shell de consola (eventualmente mediante un trabajo cron). La vista que estoy enviando es un calendario con enlaces a la página web de las aplicaciones. El problema que estoy encontrando es que las URL no incluyen la ruta correcta y por lo que he leído es porque no hay un objeto de solicitud porque estoy usando la consola. Por ejemplo, si se crea la vista en mi navegador consigo enlaces de esta manera:Crear URL completa desde CakePHP 2.1.2 Consola Shell

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

pero en el correo electrónico utilizando el mismo código me sale esto:

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

que está cerca, pero no puro .

He estado tratando de encontrar el global que puedo establecer en algún lugar para codificar solo el subdirectorio de la aplicación pero no he encontrado nada que funcione todavía. Los enlaces se hacen por un código como el siguiente:

$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')); 

yo creo que esto es una función común (el envío de URL válidas en la consola generada correo electrónico), pero simplemente no pueden entenderlo.

Gracias

Respuesta

3

Utilice la opción full_base en los enlaces

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

y establecer la constante FULL_BASE_URL en bootstrap.php a su base-url:

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

Si está utilizando rutas para su aplicación, debe incluir el enrutamiento en su shell:

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

Esto puede ser útil http://stackoverflow.com/a/13660262/1868660 –