2017-03-08 4 views
0

Ich konvertiere meine bestehende Website von CakePHP 2.x in CakePHP 3.x.Cakephp3: Zugreifen auf Inhalte innerhalb des Controllers anzeigen

Ich habe folgenden Code in CakePHP2 verwendet, um Ansicht gerenderten Inhalt im Controller zu erhalten. (Ich weiß, das zu tun, nicht zu empfehlen Art und Weise ist, aber ich muss es irgendwie.)

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

ich diesen versucht haben, aber nicht arbeiten:

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

ich auf Web durchsucht, aber couldn bekomme keine Hilfe für ähnlichen CakePHP3-Code.

Antwort

2

Nach googeln und anderen Versuch/Fehler, ich habe Art und Weise, dies zu tun herausgefunden.

$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(); 
0

Sie brauchen nicht ob_start und ob_end_clean, The View Griffe, die Teil

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

//echo $payment_form; 
+0

Dies hat nicht funktioniert Liebe. Als 'ob_start/flush' macht das hier keinen Unterschied. Trotzdem danke! – Parixit

Verwandte Themen