Rendering controller to a different view in CakePHP

devmonster picture devmonster · Jul 29, 2012 · Viewed 97.3k times · Source

Is there a way to render a controller to a different view then normal? I'm trying to pass some data from the controller to a non-default view. Meaning my controller is called:

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');
    }
}

... and My view is in views->TestView->index.ctp

Another question I have is, how to pass that value to a PHP and not a ctp file outside of the CakePHP framework?

I have tried everything from here with no luck.

Answer

taiduckman picture taiduckman · Jul 30, 2012

The right way:

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

As the answer above mentions, you can use $this -> set to pass a variable to the View.

However, if that doesn't give you what you want. I'm guessing that you also want the action to display another layout (non-default layout). You can try doing $this -> layout = 'layoutname'; (Layouts are in the layout folder, default on is default.ctp).

Note: CakePHP's controller isn't designed to pass data to a non-view file (like .php). CakePHP's views should be ending with .ctp.