Tag Archives: variables

Zend Framework: How to Build a Dynamic Layout by Setting Variables in your Controllers CodeUnit 04 APR 2011

I have a Zend Framework website that is broken up into modules. Accordingly, I want my single layout.phtml Layout script to dynamically change ever so slightly depending on what module or rather controller I hit – in my case change the header image. So how do we do this?

Well the first thing is gaining access to the Layout object so that you can set some variables in this.

To gain access within action controllers, use the layout() action helper:

// Calling helper as a method of the helper broker:
$helper = $this->_helper->getHelper('Layout');
$layout = $helper->getLayoutInstance();

To gain access within view scripts, use the layout() view helper:

$layout = $this->layout();

To gain access via the bootstrap, retrieve the layout resource:

$layout = $bootstrap->getResource('Layout');

Finally if you still can’t get a layout object to work with, use the static method (not entirely recommended):

$layout = Zend_Layout::getMvcInstance();

Now that you have a $layout object to work with, you’ll probably want to assign some sort of variable value to it in order to dynamically affect your layout.phtml file. To set a variable you can either directly assign with the = operator or make use of the assign() method:

// Setting content:
$layout->somekey = "foo"
// Using the assign() method:
$layout->assign('someotherkey', 'bar');

Okay, now that we have a variable stored in the layout object, it becomes trivial to make our layout dynamic. For example, having previously added a value to $layout->mainheaderlogo = ‘image1.png’, we can now add the following to our layout.phtml file:

<div id=”logobanner”><a href=”/”><img src=”/images/<?php echo $this->layout()->mainheaderlogo; ?>” /></a></div>

And now you know. Nifty.

(Update: Or you should probably really learn to use Zend View Placeholders correctly, as they are the correct way of making your layout more Dynamic!!)

PHP: Print out all Variables passed to a Function CodeUnit 04 JUN 2010

Working on old scripts can be quite annoying, particularly when you encounter an undocumented function and are trying to figure out firstly which inputs that function accepts, and secondly what it actually then does with it!

Of course, the easiest way of determining this is to call the function and print out what variables are coming into it, and thanks to some native PHP functions, this turns out to be quite the easy thing to do.

First up is func_num_args() which returns the number of arguments passed into the current user-defined function. Then comes the handy func_get_args() which returns an array which contains all the arguments (corresponding to the user-defined function’s argument list) passed into the function. Finally, func_get_arg() is used to return a specified argument from the passed in arguments, starting from a zero index.

If we grab a test argument to show all of the above functions in action, we get this: (grabbed off the main PHP documentation site)

function foo()
    $numargs = func_num_args();
    echo "Number of arguments: $numargs
n"; if ($numargs >= 2) { echo "Second argument is: " . func_get_arg(1) . "
n"; } $arg_list = func_get_args(); for ($i = 0; $i < $numargs; $i++) { echo "Argument $i is: " . $arg_list[$i] . "
n"; } } foo(1, 2, 3);

Quite handy little functions, aren’t they?

(And to think that I didn’t even know of their existence up until now! :P)