我正在将现有网站从CakePHP 2.x
转换为CakePHP 3.x
。
我在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();
我在网上搜索但无法获得类似CakePHP3代码的任何帮助。
答案 0 :(得分:3)
在谷歌搜索和其他试验/错误后,我已经找到了这样做的方法。
$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();
答案 1 :(得分:0)
您不需要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;