Manasa
Manasa

Reputation: 187

Cakephp 2.9 passing a variable from Controller to Layouts View

The question i am asking is very similar and already asked question.But It is working for me.

ViewReportsController.php

class ViewReportsController extends AppController {
public function index() {
$count_table = 10;//sample variable that is available in view
$this->set('count_tablen',$count_table);
}
}

APP/View/Layouts/default.ctp

 pr($count_tablen);

Now i am getting the error says- Undefined variable: count_tablen [APP/View/Layouts/default.ctp, line 228]

Upvotes: 0

Views: 60

Answers (1)

drmonkeyninja
drmonkeyninja

Reputation: 8540

You are using a variable in your main layout template which is likely used by multiple controller actions. Therefore, the code example you've provided would only work on /view_reports/index. If you want to set variables to be used in the layout templates you need to do this in the beforeRender callback of AppController so that it can be used everywhere:-

public function beforeRender() {
    parent::beforeRender();
    $count_table = 10;
    $this->set('count_tablen', $count_table);
}

If you use multiple layout templates you can check which template will be used in beforeRender before setting the variable:-

public function beforeRender() {
    parent::beforeRender();
    if ($this->layout === 'default') {
        $count_table = 10;
        $this->set('count_tablen', $count_table);
    }
}

Upvotes: 2

Related Questions