views:

26

answers:

3

Say for example in mydefaultlayout.phtml i have an array declared in this way

$pages['words'] = array( 'APPLE', 'BALL', 'CAT', 'DOG', 'HELL', 'INK', 'PINK'); $pages['letters'] = array( 'A', 'B', 'C', 'D', 'H', 'I', 'K');

Mydefaultlayout.phtml has been my default layout in the entire application so it is available to every controller .So How do I access this elements $pages['words'] and $pages['letters'] in my controller.

How can i assign them to the view from the controller.

Class MyController extends Zend_controller_Action{

      public function indexAction(){

if($_POST['page']=='ABC'){ //How do i assign this $pages['words'] and $pages['letters'] to the view

 $view->myarray = $pages['words'];

 $view->myarray = $pages['letters']; 

}

} 


    }

One solution i have in mind is again redefine the $pages['words'] and $pages['letters'] in the controller and assign it to the view which is the repeatative code .How can i access the $pages['words'] and $pages['letters'] in the controller or view directly

A: 

This is a little off the cuff, but why is the array defined in your layout?

If you need to have it available everywhere why not define it say in your bootstrap & then pass it to the views/controllers as and when you need?

So in your bootstrap you can have something like this:

$pages['words'] = array( 'APPLE', 'BALL', 'CAT', 'DOG', 'HELL', 'INK', 'PINK');

$pages['letters'] = array( 'A', 'B', 'C', 'D', 'H', 'I', 'K');

$view->pages = $pages;

Then in your views, you can access them:

print_r($this->pages);

Hope this is helpful, just going from memory & in a rush :)

n1c
A: 

you shouldn't access any view variable from controller.

better to define data $page['words'] and $page['latters'] at model, and access it when you need it from both controller and view.

Swing Magic
A: 
ferso