2013-12-18 99 views
0

我已经成功地创建在/控制器访问的报告/报告CakePHP的 - 使整个页面为HTML附加到电子邮件

我现在想创建一个单独的控制器方法来创建此报告为HTML文件,并通过电子邮件发送到指定用途。我已经做到了这一点,但碰到了一个障碍。当HTML文件被渲染时,它只是来自/ report方法的视图元素 - 布局(包括CSS)不会被渲染。

这里的基本结构:

public function email_report() { 
    $render = $this->requestAction('/controller/report'); 
    //$render is then used by fwrite to create a .HTML file, which is then attached to an email 
} 

public function report() { 
    //yada yada 
    //render in report layout rather than default 
    $this->render('report', 'reports'); 
} 

所以问题是,$仅渲染包含视图的东西,而不是东西从我的“报告”的布局。我需要做些什么才能在我的HTML文件中获得布局?

我可以把所有的HTML放在视图中,但我想在将来使用相同的布局创建其他报告,并希望避免重复。

+0

您是否尝试过设置布局:$ this-> Layout ='default'; – Dave

+0

我刚试过 - 它不起作用。 – gazareth

+0

您是否使用EmailComponent? –

回答

1

改为使用以下内容。请注意传递给函数的额外数组参数

bare指示是否包含布局。将其设置为0,即false强制它包含布局。包括returnrequested1requested指示请求是否来自requestAction。

http://book.cakephp.org/2.0/en/controllers/request-response.html访问和http://book.cakephp.org/2.0/en/controllers.html参考

$这 - > requestAction( '/控制器/报告',阵列( '返回', '裸'=> 0));

+0

谢谢,这个作品很棒。我实际上正在阅读requestAction,但我一定是在文档的错误部分,因为我没有看到任何关于'裸'。 – gazareth