Cakephp3:访问Controller内的View内容

时间:2017-03-08 09:19:27

标签: php cakephp cakephp-3.0

我正在将现有网站从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代码的任何帮助。

2 个答案:

答案 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_startob_end_cleanView处理该部分

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

//echo $payment_form;