控制器内部的Cakephp 3渲染视图

控制器内部的Cakephp 3渲染视图,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我知道,在控制器中渲染视图,然后使用控制器中的辅助对象似乎是一种不好的做法。但我在我们的作品中有一个例外。在cakephp 2中是这样的: class MyController extends Controller { ... public function myFunction() { $this->set('pagesArray', $pagesArray); $this->set('sitemapType', $sitemapTy

我知道,在控制器中渲染视图,然后使用控制器中的辅助对象似乎是一种不好的做法。但我在我们的作品中有一个例外。在cakephp 2中是这样的:

class MyController extends Controller {
    ...
    public function myFunction() {
        $this->set('pagesArray', $pagesArray);
        $this->set('sitemapType', $sitemapType);

        $view = new View($this);
        $viewdata = $view->render('my_function');
        file_put_contents($path, $viewdata);
        ...
        $myData = $view->Myhelper->getData();
    }
    ...
}

这在cakephp 3中可能吗?

使用视图单元格,它们的设计考虑了这种用例:

否则,只需调用
$response=$this->render()
,然后将结果保存到文件中:

file_put_contents($path, $response->body());

一切皆有可能。您正在尝试使用ajax获取视图吗?不,这不是ajax请求。除了params要求的支票,这有什么区别吗?谢谢<代码>$this->render()可从控制器工作。但是否可以从控制器中调用帮助器方法。这在cakephp 2中是可能的。已编辑的问题。此外,是否可以在视图文件中访问请求参数?例如,我使这个
$Mains=newmainscontroller()$响应=$Mains->render('index','default')index.ctp
中,我检查
$this->request->params['controller']
参数。但看起来,当我试图从视图文件中访问
请求
对象时,它是空的。(在正常情况下,请求对象是可以的,但在本例中是空的)创建一个空控制器并以这种方式渲染视图是一个坏主意,因此您会得到意外的结果。
$view = new View(new Request(), new Response());
$viewdata = $view->render('my_function);