Отображение контроллера на другое представление в CakePHP

Есть ли способ визуализировать контроллер с другим видом, а затем нормальным? Я пытаюсь передать некоторые данные с контроллера на представление, отличное от стандартного. Значение моего контроллера называется:

class StocksRealtimeController extends AppController { var $uses = 'StockRealtime'; function index(){ $action = '/TestView'; $this->set('stocksRT', $this->StockRealtime->find('all')); //$this -> viewPath = 'Pages'; $this -> render('/TestView/index'); } } 

… и My view в view-> TestView-> index.ctp

Еще один вопрос, как передать это значение PHP, а не файл ctp вне рамки CakePHP?

Я пробовал все отсюда без везения.

Правильный путь:

$this -> render('TestView/index');

Как упоминалось выше, вы можете использовать $this->set для передачи переменной в View.

Однако, если это не дает вам то, что вы хотите, я предполагаю, что вы также хотите действовать, чтобы отобразить другой макет (нестандартный макет). Вы можете попробовать сделать $this -> layout = 'layoutname'; (Макеты находятся в папке макета, значение по умолчанию – default.ctp)

Примечание. Контроллер CakePHP не предназначен для передачи данных в файл без просмотра (например, .php). Взгляды CakePHP должны заканчиваться на .ctp

Я предпочел бы использовать:

 $this->view = 'file'; 

потому что любое $this->set('var', $val) вы получите после $this->render('file') , не достигнет вашего представления.

В CakePHP 3.x используется:

 $this->viewBuilder()->template('file'); 

Попробуйте поместить имя представления без расширения .ctp.

 $this->render('file'); 
 class StocksRealtimeController extends AppController { var $uses = 'StockRealtime'; function index( ) { $this->layout = NULL; $this->autoRender = false; $this->set('stocksRT', $this->StockRealtime->find('all')); return $this -> render('/TestView/index'); /* $this -> render('/TestView/index'); Here 'TestView' must be a Folder named same as "public $name" variable value in Controller and an "index.ctp" must be situated under TestView Folder. 'index' */ } } 

Попробуйте, верните «KEYWORD», чтобы сделать страницу просмотра успешно. Извините за второй вопрос, так как я его не понял. Согласно CakePHP, переменная [stockTR], которая устанавливается с помощью $ this -> set (), также будет доступна на странице просмотра рендеринга вручную ['index.ctp'].

  $this->view = '/TestView/index'; $this->set('stocksRT', $this->StockRealtime->find('all')); 
 public function admin_index() { $this->layout = 'admin/table'; $action = '/Vendors'; $this->Prg->commonProcess('Vendor'); $this->paginate = array('conditions' => array($this->Vendor->parseCriteria($this->passedArgs)), 'order' => 'Vendor.created_on DESC', 'limit' => 15); $this->set('vendor', $this->paginate('Vendor')); $this->render('/vendors/admin_items'); } 
 class StocksRealtimeController extends AppController { var $uses = 'StockRealtime'; function index(){ $this->layout = NULL; $this->autoRender = false; $this->set('stocksRT', $this->StockRealtime->find('all')); $this -> render(`/TestView/index`); } }