so awesome. big kudos, very nice.
- david
Am 11.07.2008 um 18:09 schrieb mugeso:
> Hi everyone,
>
> Today, I introduce an idea to assign default values to $template in
> your
> template throgh view's attributes.
>
> This can be implemented simply like this:
>
> // ProjectBaseView.class.php
> <?php
> class ProjectBaseView extends AgaviView
> {
> public function loadLayout($layoutName = null)
> {
> $parameters = parent::loadLayout($layoutName);
> $assigns = array_key_exists('default_assigns', $parameters) ?
> (array)$parameters['default_assigns'] : array();
> foreach( $assigns as $key=>$value) {
> $this->setAttribute($key, $value);
> }
> return $parameters;
> }
>
> /**
> some codes here....
> **/
> }
> ?>
> // EOF
>
> Only this :)
> And you can set default values following:
> // a layout setting in output_type.xml
> <layout>
> <layers>
> <layer name="content" />
> <layer name="decorator">
> <parameter name="template">%core.template_dir%/Master</parameter>
> </layer>
> </layers>
>
> <parameter name="default_assigns">
> <parameter name="allow_index">false</parameter>
> <parameter name="author">MugeSo</parameter>
> <parameter name="style_sheets"><!-- an array parameter -->
> <parameter>css/base.css</parameter>
> <parameter>css/default.css</parameter>
> </parameter>
> </parameter>
> </layout>
> // End of layout
>
> Now you can use these values in your templates ;)
> For example, using them in Master template:
> // Master.php
> <html>
> <head>
> <meta name="author" content="<?php echo $template['author']; ?>" />
> <meta name="robots" content="<?php if($template['allow_index']):
> ?>index<?php else: ?>noindex<?php endif;?>,follow" />
>
> <?php foreach($template['style_sheets'] as $style_sheet): ?>
> <link rel="stylesheet" href="<?php echo $style_sheet; ? />"
> type="text/css">
> <?php endforeach; ?>
> <base href="<?php echo $ro->getBaseHref();?>" />
> </head>
> <body>
> <?php echo $inner; ?>
>
> </body>
> </html>
> // EOF
>
> Above code works without any notice even if you don't set author,
> allow_index or style_sheets in your View, though you needed to set
> them
> in all of your Views or to check $template with
> isset($template['some_key']) or array_key_exists('some_key',
> $template)
> in your template before.
>
> Of course, you are also allowed to overwrite some of them like this:
> // executeHtml in your view
> function executeHtml(AgaviRequestDataHolder $rd)
> {
> $this->loadLayout();// you can use setupHtml here too ;)
> $this->setAttribute('allow_index', true);
> $this->setAttribute('author', 'David Zulke');
> $this->appendAttribute('style_sheets', 'css/other.css');
>
> /** some codes here **/
> }
> // end of executeHtml
>
> Thank for your reading :)
>
> enjoy your weekend,
>
> from Japan,
>
> MugeSo
>
> _______________________________________________
> users mailing list
> [email protected]
> http://lists.agavi.org/mailman/listinfo/users
>
_______________________________________________
users mailing list
[email protected]
http://lists.agavi.org/mailman/listinfo/users