Cakephp3:访问控制器内的查看内容

问题描述:

我正在将我现有的网站从CakePHP 2.x转换为CakePHP 3.xCakephp3:访问控制器内的查看内容

我已经在cakePHP2中使用以下代码来获取控制器中的视图呈现内容。 (我知道这是不是做推荐的方式,但我不知何故需要它。)

ob_start(); 
$view = new View($this, false); 
$payment_form = $view->render(); 
ob_end_clean(); 

我已经试过这但不工作

ob_start(); 
$view = new \Cake\View\View($this->request, $this->response); 
$payment_form = $view->render('/Orders/index'); 
ob_end_clean(); 

我搜索的网页,但couldn对类似的CakePHP3代码没有任何帮助。

谷歌搜索和其他试验/错误后,我已想出办法做下去。

$data = "This will be accessible in view if it will be set in view builder"; 

// create a builder (hint: new ViewBuilder() constructor works too) 
$builder = $this->viewBuilder(); 

// configure as needed 
$builder->autoLayout(false); 
$builder->template('Orders/process_order'); 
$builder->helpers(['Html']); 

// create a view instance (set variables here which you want to access in view) 
$view = $builder->build(['data' => $data]); 

// render to a variable 
$payment_form = $view->render(); 

你不需要ob_startob_end_clean,该View处理该部分

$view = new \Cake\View\View($this->request, $this->response); 
$payment_form = $view->render('/Orders/index'); //Returns the view content 

//echo $payment_form; 
+0

这没有工作亲爱的。由于'ob_start/flush'在这里没有任何区别。不管怎样,谢谢! – Parixit