Cakephp3:访问控制器内的查看内容
问题描述:
我正在将我现有的网站从CakePHP 2.x
转换为CakePHP 3.x
。Cakephp3:访问控制器内的查看内容
我已经在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_start
和ob_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;
这没有工作亲爱的。由于'ob_start/flush'在这里没有任何区别。不管怎样,谢谢! – Parixit