I would have thought though that there can only be one Description so I need
to do

// Layout Call
if ($config->meta->description) {
    $this->headMeta()->setName('description', $config->meta->description);
}

// View Call
$this->headMeta()->setName('description', 'Words words words.');

Trouble is the Layout call is getting processed afterwards and overwriting
my view call - can I check if something exists in the array first and then
decide to call the layout setName?

Cheers

2009/10/10 Matthew Weier O'Phinney <matt...@zend.com>

> -- Ian Warner <iwar...@triangle-solutions.com> wrote
> (on Saturday, 10 October 2009, 02:38 AM +0900):
> > I have this in my Layout script - setting some default Meta Data:
> >
> > // Setting META Headers come from the Config File
> > if ($config->meta->keywords) {
> >     $this->headMeta()->appendName('keywords', $config->meta->keywords);
> > }
> >
> > if ($config->meta->description) {
> >     $this->headMeta()->appendName('description',
> $config->meta->description);
> > }
> >
> > echo $this->headMeta() . PHP_EOL;
> >
> >
> > Now in a View I want to overide so I call:
> > $this->headMeta()->setName('description', 'Words words words.');
> >
> > I would expect there to be only one description on the site - but two are
> > printed the default and the one from the view.
> > Is this a bug or expected behaviour - if so how do I make sure only one
> is
> > visible.
>
> Expected behavior; setName() sets the first element in the array.
>
> You can *clear* what's in the array by passing an empty array to
> exchangeArray(), as the containers extend ArrayObject:
>
>    $this->headMeta()->exchangeArray(array());
>     $this->headMeta()->setName('description', 'Words words words.');
>
> --
> Matthew Weier O'Phinney
> Project Lead            | matt...@zend.com
> Zend Framework          | http://framework.zend.com/
>

Reply via email to