Re: Variating right menu based on content

2008-11-17 Thread grigri

You'd be better off modifying the helper - just initialize the chunks
you want to an empty string:

class ChunksHelper extends AppHelper {
  var $buffer = array(
'header' = '',
'sidebar' = '',
'something' = ''
  );
}

Now you can just call

?php echo $something_for_layout; ?

in the view, because it will always be set.

hth
grigri



On Nov 14, 1:24 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:
 Uhm... if i check for empty chunks before the layout render (for
 example in App_Controller)?

 the only code in layout will be something like

 ?php $something_for_layout ?

 it will be easier to change layout in future.

 am i right?

 On 14 Nov, 09:51, grigri [EMAIL PROTECTED] wrote:

  If it's the same header on every view, just call it in the layout.

  If, on the other hand, it's the same header in MOST views, use the
  chunks helper as above:

  some_view.ctp:

  ?php $chunks-begin('header'); ?
  This will end up in the header
  ?php $chunks-end(); ?

  your_layout.ctp:

  ?php
  if (!empty($header_for_layout)) {
    // A header has been defined in the view, so show it
    echo $header_for_layout;}

  else {
    // No header has been defined; use the default one
    echo $this-element('default_header');}

  ?

  elements/default_header.ctp:

  This is the default header

  Easy, huh?

  hth
  grigri

  On Nov 13, 5:14 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

   Uhm... another little problem...

   What about a default Header? (Same header on every view)

   How can i do? using AppController?

   On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:

Indeed, the beforeLayout() callback doesn't seem to work.

If works if you put it in afterRender() 
though:http://bin.cakephp.org/view/815089959
(tested this time)

(same usage)

hth
grigri

On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

 Hi grigri
 Thanks for the reply.

 I followed your suggestions but i can't get the code work.

 No errors but also no outputs :\

 BTW i modified a little bit the layout code

         body
                 div id=container
                         div id=header?php if 
 (isset($header_for_layout)) { echo
 $header_for_layout; } ?/div
                         div id=leftbar?php if 
 (isset($leftbar_for_layout)) {  echo
 $leftbar_for_layout; } ?/div
                         div id=rightbar?php if 
 (isset($rightbar_for_layout)) {  echo
 $rightbar_for_layout; } ?/div
                         div id=content?php if 
 (isset($content_for_layout)) {  echo
 $content_for_layout; } ?/div
                         div id=footer?php if 
 (isset($footer_for_layout)) {  echo
 $footer_for_layout; } ?/div
                 /div
         /body

 Sorry for my n00bness :(

 On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

  Off the top of my head, I'd suggest using a helper combined with
  output buffering, like this:

  class ChunksHelper extends AppHelper {
    var $chunkId = null;
    var $append = false;
    var $buffer = array();

    function begin($chunkId, $append = false) {
      if (empty($this-chunkId)) {
        $this-chunkId = $chunkId;
        $this-append = $append;
        ob_start();
      }
    }

    function end() {
      if (!empty($this-chunkId)) {
        $contents = ob_get_clean();
        if ($this-append) {
          if (isset($this-buffer[$this-chunkId])) {
            $this-buffer[$this-chunkId] .= $contents;
          }
          else {
            $this-buffer[$this-chunkId] = $contents;
          }
        }
        else {
          $this-buffer[$this-chunkId] = $contents;
        }
        $this-chunkId = false;
      }
    }

    function beforeLayout() {
      $View = ClassRegistry::getObject('View');
      foreach($this-buffer as $key = $value) {
        $View-set($key . '_for_layout', $value);
      }
    }

  }

  Then in your view:

  ?php $chunks-begin('rightbar'); ?
  This will end up in the right bar
  ?php $chunks-end(); ?

  (The code might need a bit of modifying; I just wrote it quickly, 
  but
  the idea is sound. You'll definitely want to add error-checking)

  hth
  grigri

  On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

   Hello all.
   First time posting here.

   I have a 3-column layout where the 3rd column is intended to be a
   menu.
   here's the code

   html xmlns=http://www.w3.org/1999/xhtml; lang=en 
   xml:lang=en
           head
                   ?php
                           echo $scripts_for_layout;
                           echo $html-css(green, stylesheet);
                   ?
                   titleErny - ?php echo $title_for_layout; 
   ?/title
           /head
 

Re: Variating right menu based on content

2008-11-17 Thread i_Am_ToO_SeXy

This code

?php
class AppController extends Controller {
function beforeFilter() {
if (empty($title_for_layout)) { $this-set
(title_for_layout,TITLE); }
if (empty($header_for_layout)) { $this-set
(header_for_layout,HEADER); }
if (empty($leftbar_for_layout)) { $this-set
(leftbar_for_layout,LEFTBAR); }
if (empty($rightbar_for_layout)) { $this-set
(rightbar_for_layout,RIGHTBAR); }
if (empty($content_for_layout)) { $this-set
(content_for_layout,CONTENT); }
if (empty($footer_for_layout)) { $this-set
(footer_for_layout,FOOTER); }
}
}
?

also worked but...

What about assigning an element or an html page as, for example,
default header?

$this-set(header_for_layout,$this-render(/elements/
default_header.ctp)); ??

On 17 Nov, 09:59, grigri [EMAIL PROTECTED] wrote:
 You'd be better off modifying the helper - just initialize the chunks
 you want to an empty string:

 class ChunksHelper extends AppHelper {
   var $buffer = array(
     'header' = '',
     'sidebar' = '',
     'something' = ''
   );

 }

 Now you can just call

 ?php echo $something_for_layout; ?

 in the view, because it will always be set.

 hth
 grigri

 On Nov 14, 1:24 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:



  Uhm... if i check for empty chunks before the layout render (for
  example in App_Controller)?

  the only code in layout will be something like

  ?php $something_for_layout ?

  it will be easier to change layout in future.

  am i right?

  On 14 Nov, 09:51, grigri [EMAIL PROTECTED] wrote:

   If it's the same header on every view, just call it in the layout.

   If, on the other hand, it's the same header in MOST views, use the
   chunks helper as above:

   some_view.ctp:

   ?php $chunks-begin('header'); ?
   This will end up in the header
   ?php $chunks-end(); ?

   your_layout.ctp:

   ?php
   if (!empty($header_for_layout)) {
     // A header has been defined in the view, so show it
     echo $header_for_layout;}

   else {
     // No header has been defined; use the default one
     echo $this-element('default_header');}

   ?

   elements/default_header.ctp:

   This is the default header

   Easy, huh?

   hth
   grigri

   On Nov 13, 5:14 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

Uhm... another little problem...

What about a default Header? (Same header on every view)

How can i do? using AppController?

On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:

 Indeed, the beforeLayout() callback doesn't seem to work.

 If works if you put it in afterRender() 
 though:http://bin.cakephp.org/view/815089959
 (tested this time)

 (same usage)

 hth
 grigri

 On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

  Hi grigri
  Thanks for the reply.

  I followed your suggestions but i can't get the code work.

  No errors but also no outputs :\

  BTW i modified a little bit the layout code

          body
                  div id=container
                          div id=header?php if 
  (isset($header_for_layout)) { echo
  $header_for_layout; } ?/div
                          div id=leftbar?php if 
  (isset($leftbar_for_layout)) {  echo
  $leftbar_for_layout; } ?/div
                          div id=rightbar?php if 
  (isset($rightbar_for_layout)) {  echo
  $rightbar_for_layout; } ?/div
                          div id=content?php if 
  (isset($content_for_layout)) {  echo
  $content_for_layout; } ?/div
                          div id=footer?php if 
  (isset($footer_for_layout)) {  echo
  $footer_for_layout; } ?/div
                  /div
          /body

  Sorry for my n00bness :(

  On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

   Off the top of my head, I'd suggest using a helper combined with
   output buffering, like this:

   class ChunksHelper extends AppHelper {
     var $chunkId = null;
     var $append = false;
     var $buffer = array();

     function begin($chunkId, $append = false) {
       if (empty($this-chunkId)) {
         $this-chunkId = $chunkId;
         $this-append = $append;
         ob_start();
       }
     }

     function end() {
       if (!empty($this-chunkId)) {
         $contents = ob_get_clean();
         if ($this-append) {
           if (isset($this-buffer[$this-chunkId])) {
             $this-buffer[$this-chunkId] .= $contents;
           }
           else {
             $this-buffer[$this-chunkId] = $contents;
           }
         }
         else {
           $this-buffer[$this-chunkId] = $contents;
         }
         $this-chunkId = false;
       }
     }

     function beforeLayout() {
       $View = 

Re: Variating right menu based on content

2008-11-15 Thread Luenyar

Um, this might be kinda hacky, but I'm using the following currently
and it functions fine for me.  In my default layout:

div id=sidebar
echo @$this-element('sidebars/' . $this-params['controller'] .
'/' . $this-params['action']);
/div

So I have, for example, \elements\sidebars\requests and \elements
\sidebars\announcements etc. with search.ctp and view.ctp.  So if I am
at site/requests/search the \elements\sidebars\requests\search.ctp
sidebar is rendered.  If at site/requests/index, then the render fails
silently and no one knows but me.  Probably could be more elegant and
correct with an if (file exists), I should probably do that someday.

HTH,
Milton

On Nov 14, 8:24 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:
 Uhm... if i check for empty chunks before the layout render (for
 example in App_Controller)?

 the only code in layout will be something like

 ?php $something_for_layout ?

 it will be easier to change layout in future.

 am i right?

 On 14 Nov, 09:51, grigri [EMAIL PROTECTED] wrote:

  If it's the same header on every view, just call it in the layout.

  If, on the other hand, it's the same header in MOST views, use the
  chunks helper as above:

  some_view.ctp:

  ?php $chunks-begin('header'); ?
  This will end up in the header
  ?php $chunks-end(); ?

  your_layout.ctp:

  ?php
  if (!empty($header_for_layout)) {
    // A header has been defined in the view, so show it
    echo $header_for_layout;}

  else {
    // No header has been defined; use the default one
    echo $this-element('default_header');}

  ?

  elements/default_header.ctp:

  This is the default header

  Easy, huh?

  hth
  grigri

  On Nov 13, 5:14 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

   Uhm... another little problem...

   What about a default Header? (Same header on every view)

   How can i do? using AppController?

   On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:

Indeed, the beforeLayout() callback doesn't seem to work.

If works if you put it in afterRender() 
though:http://bin.cakephp.org/view/815089959
(tested this time)

(same usage)

hth
grigri

On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

 Hi grigri
 Thanks for the reply.

 I followed your suggestions but i can't get the code work.

 No errors but also no outputs :\

 BTW i modified a little bit the layout code

         body
                 div id=container
                         div id=header?php if 
 (isset($header_for_layout)) { echo
 $header_for_layout; } ?/div
                         div id=leftbar?php if 
 (isset($leftbar_for_layout)) {  echo
 $leftbar_for_layout; } ?/div
                         div id=rightbar?php if 
 (isset($rightbar_for_layout)) {  echo
 $rightbar_for_layout; } ?/div
                         div id=content?php if 
 (isset($content_for_layout)) {  echo
 $content_for_layout; } ?/div
                         div id=footer?php if 
 (isset($footer_for_layout)) {  echo
 $footer_for_layout; } ?/div
                 /div
         /body

 Sorry for my n00bness :(

 On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

  Off the top of my head, I'd suggest using a helper combined with
  output buffering, like this:

  class ChunksHelper extends AppHelper {
    var $chunkId = null;
    var $append = false;
    var $buffer = array();

    function begin($chunkId, $append = false) {
      if (empty($this-chunkId)) {
        $this-chunkId = $chunkId;
        $this-append = $append;
        ob_start();
      }
    }

    function end() {
      if (!empty($this-chunkId)) {
        $contents = ob_get_clean();
        if ($this-append) {
          if (isset($this-buffer[$this-chunkId])) {
            $this-buffer[$this-chunkId] .= $contents;
          }
          else {
            $this-buffer[$this-chunkId] = $contents;
          }
        }
        else {
          $this-buffer[$this-chunkId] = $contents;
        }
        $this-chunkId = false;
      }
    }

    function beforeLayout() {
      $View = ClassRegistry::getObject('View');
      foreach($this-buffer as $key = $value) {
        $View-set($key . '_for_layout', $value);
      }
    }

  }

  Then in your view:

  ?php $chunks-begin('rightbar'); ?
  This will end up in the right bar
  ?php $chunks-end(); ?

  (The code might need a bit of modifying; I just wrote it quickly, 
  but
  the idea is sound. You'll definitely want to add error-checking)

  hth
  grigri

  On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

   Hello all.
   First time posting here.

   I have a 3-column layout where the 3rd column is intended to be a
   menu.
   here's the code

   html xmlns=http://www.w3.org/1999/xhtml; 

Re: Variating right menu based on content

2008-11-14 Thread grigri

If it's the same header on every view, just call it in the layout.

If, on the other hand, it's the same header in MOST views, use the
chunks helper as above:

some_view.ctp:

?php $chunks-begin('header'); ?
This will end up in the header
?php $chunks-end(); ?

your_layout.ctp:

?php
if (!empty($header_for_layout)) {
  // A header has been defined in the view, so show it
  echo $header_for_layout;
}
else {
  // No header has been defined; use the default one
  echo $this-element('default_header');
}
?

elements/default_header.ctp:

This is the default header

Easy, huh?

hth
grigri

On Nov 13, 5:14 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:
 Uhm... another little problem...

 What about a default Header? (Same header on every view)

 How can i do? using AppController?

 On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:

  Indeed, the beforeLayout() callback doesn't seem to work.

  If works if you put it in afterRender() 
  though:http://bin.cakephp.org/view/815089959
  (tested this time)

  (same usage)

  hth
  grigri

  On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

   Hi grigri
   Thanks for the reply.

   I followed your suggestions but i can't get the code work.

   No errors but also no outputs :\

   BTW i modified a little bit the layout code

           body
                   div id=container
                           div id=header?php if 
   (isset($header_for_layout)) { echo
   $header_for_layout; } ?/div
                           div id=leftbar?php if 
   (isset($leftbar_for_layout)) {  echo
   $leftbar_for_layout; } ?/div
                           div id=rightbar?php if 
   (isset($rightbar_for_layout)) {  echo
   $rightbar_for_layout; } ?/div
                           div id=content?php if 
   (isset($content_for_layout)) {  echo
   $content_for_layout; } ?/div
                           div id=footer?php if 
   (isset($footer_for_layout)) {  echo
   $footer_for_layout; } ?/div
                   /div
           /body

   Sorry for my n00bness :(

   On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

Off the top of my head, I'd suggest using a helper combined with
output buffering, like this:

class ChunksHelper extends AppHelper {
  var $chunkId = null;
  var $append = false;
  var $buffer = array();

  function begin($chunkId, $append = false) {
    if (empty($this-chunkId)) {
      $this-chunkId = $chunkId;
      $this-append = $append;
      ob_start();
    }
  }

  function end() {
    if (!empty($this-chunkId)) {
      $contents = ob_get_clean();
      if ($this-append) {
        if (isset($this-buffer[$this-chunkId])) {
          $this-buffer[$this-chunkId] .= $contents;
        }
        else {
          $this-buffer[$this-chunkId] = $contents;
        }
      }
      else {
        $this-buffer[$this-chunkId] = $contents;
      }
      $this-chunkId = false;
    }
  }

  function beforeLayout() {
    $View = ClassRegistry::getObject('View');
    foreach($this-buffer as $key = $value) {
      $View-set($key . '_for_layout', $value);
    }
  }

}

Then in your view:

?php $chunks-begin('rightbar'); ?
This will end up in the right bar
?php $chunks-end(); ?

(The code might need a bit of modifying; I just wrote it quickly, but
the idea is sound. You'll definitely want to add error-checking)

hth
grigri

On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

 Hello all.
 First time posting here.

 I have a 3-column layout where the 3rd column is intended to be a
 menu.
 here's the code

 html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
         head
                 ?php
                         echo $scripts_for_layout;
                         echo $html-css(green, stylesheet);
                 ?
                 titleErny - ?php echo $title_for_layout; ?/title
         /head
         body
                 div id=container
                         div id=header?php echo 
 $header_for_layout; ?/div
                         div id=leftbar?php echo 
 $leftbar_for_layout; ?/div
                         div id=rightbar?php echo 
 $rightbar_for_layout; ?/div
                         div id=content?php echo 
 $content_for_layout; ?/div
                         div id=footer?php echo 
 $footer_for_layout; ?/div
                 /div
         /body
 /html

 The right menu should change his html code based on the current view.
 I googled a lot but the only way i found is to use a Helper inside the
 controller... that's not very MVC-ish...
 So... is there any better way? :)

 Thanks in advance.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to 

Re: Variating right menu based on content

2008-11-14 Thread i_Am_ToO_SeXy

obvious...

/slapping myself

grigri ha scritto:

 If it's the same header on every view, just call it in the layout.

 If, on the other hand, it's the same header in MOST views, use the
 chunks helper as above:

 some_view.ctp:

 ?php $chunks-begin('header'); ?
 This will end up in the header
 ?php $chunks-end(); ?

 your_layout.ctp:

 ?php
 if (!empty($header_for_layout)) {
   // A header has been defined in the view, so show it
   echo $header_for_layout;
 }
 else {
   // No header has been defined; use the default one
   echo $this-element('default_header');
 }
 ?

 elements/default_header.ctp:

 This is the default header

 Easy, huh?

 hth
 grigri

 On Nov 13, 5:14�pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:
  Uhm... another little problem...
 
  What about a default Header? (Same header on every view)
 
  How can i do? using AppController?
 
  On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:
 
   Indeed, the beforeLayout() callback doesn't seem to work.
 
   If works if you put it in afterRender() 
   though:http://bin.cakephp.org/view/815089959
   (tested this time)
 
   (same usage)
 
   hth
   grigri
 
   On Nov 13, 10:13�am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:
 
Hi grigri
Thanks for the reply.
 
I followed your suggestions but i can't get the code work.
 
No errors but also no outputs :\
 
BTW i modified a little bit the layout code
 
� � � � body
� � � � � � � � div id=container
� � � � � � � � � � � � div id=header?php if 
(isset($header_for_layout)) { echo
$header_for_layout; } ?/div
� � � � � � � � � � � � div id=leftbar?php if 
(isset($leftbar_for_layout)) { �echo
$leftbar_for_layout; } ?/div
� � � � � � � � � � � � div id=rightbar?php if 
(isset($rightbar_for_layout)) { �echo
$rightbar_for_layout; } ?/div
� � � � � � � � � � � � div id=content?php if 
(isset($content_for_layout)) { �echo
$content_for_layout; } ?/div
� � � � � � � � � � � � div id=footer?php if 
(isset($footer_for_layout)) { �echo
$footer_for_layout; } ?/div
� � � � � � � � /div
� � � � /body
 
Sorry for my n00bness :(
 
On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:
 
 Off the top of my head, I'd suggest using a helper combined with
 output buffering, like this:
 
 class ChunksHelper extends AppHelper {
 � var $chunkId = null;
 � var $append = false;
 � var $buffer = array();
 
 � function begin($chunkId, $append = false) {
 � � if (empty($this-chunkId)) {
 � � � $this-chunkId = $chunkId;
 � � � $this-append = $append;
 � � � ob_start();
 � � }
 � }
 
 � function end() {
 � � if (!empty($this-chunkId)) {
 � � � $contents = ob_get_clean();
 � � � if ($this-append) {
 � � � � if (isset($this-buffer[$this-chunkId])) {
 � � � � � $this-buffer[$this-chunkId] .= $contents;
 � � � � }
 � � � � else {
 � � � � � $this-buffer[$this-chunkId] = $contents;
 � � � � }
 � � � }
 � � � else {
 � � � � $this-buffer[$this-chunkId] = $contents;
 � � � }
 � � � $this-chunkId = false;
 � � }
 � }
 
 � function beforeLayout() {
 � � $View = ClassRegistry::getObject('View');
 � � foreach($this-buffer as $key = $value) {
 � � � $View-set($key . '_for_layout', $value);
 � � }
 � }
 
 }
 
 Then in your view:
 
 ?php $chunks-begin('rightbar'); ?
 This will end up in the right bar
 ?php $chunks-end(); ?
 
 (The code might need a bit of modifying; I just wrote it quickly, but
 the idea is sound. You'll definitely want to add error-checking)
 
 hth
 grigri
 
 On Nov 12, 4:11�pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:
 
  Hello all.
  First time posting here.
 
  I have a 3-column layout where the 3rd column is intended to be a
  menu.
  here's the code
 
  html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
  � � � � head
  � � � � � � � � ?php
  � � � � � � � � � � � � echo $scripts_for_layout;
  � � � � � � � � � � � � echo $html-css(green, stylesheet);
  � � � � � � � � ?
  � � � � � � � � titleErny - ?php echo $title_for_layout; 
  ?/title
  � � � � /head
  � � � � body
  � � � � � � � � div id=container
  � � � � � � � � � � � � div id=header?php echo 
  $header_for_layout; ?/div
  � � � � � � � � � � � � div id=leftbar?php echo 
  $leftbar_for_layout; ?/div
  � � � � � � � � � � � � div id=rightbar?php echo 
  $rightbar_for_layout; ?/div
  � � � � � � � � � � � � div id=content?php echo 
  $content_for_layout; ?/div
  � � � � � � � � � � � � div id=footer?php echo 
  $footer_for_layout; ?/div
  � � � � � � � � /div
  � � � � /body
  /html
 
  The right menu should change his html code based on the current 
  view.
  I googled a lot but the only way i found is to use a Helper inside 
  the
  controller... that's 

Re: Variating right menu based on content

2008-11-14 Thread i_Am_ToO_SeXy

Checking for empty chunks in the layout is not very handy because
there's too much code in layout.
Too much code in layout = harder migration/implementation on new
layouts
I'm trying to do those checks before the layout rendering
so the only code in layouts will be

?php $something_for_layout ?

What about checking Chunks in AppController's beforeFilter() ?


On 14 Nov, 09:51, grigri [EMAIL PROTECTED] wrote:
 If it's the same header on every view, just call it in the layout.

 If, on the other hand, it's the same header in MOST views, use the
 chunks helper as above:

 some_view.ctp:

 ?php $chunks-begin('header'); ?
 This will end up in the header
 ?php $chunks-end(); ?

 your_layout.ctp:

 ?php
 if (!empty($header_for_layout)) {
   // A header has been defined in the view, so show it
   echo $header_for_layout;}

 else {
   // No header has been defined; use the default one
   echo $this-element('default_header');}

 ?

 elements/default_header.ctp:

 This is the default header

 Easy, huh?

 hth
 grigri

 On Nov 13, 5:14 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:



  Uhm... another little problem...

  What about a default Header? (Same header on every view)

  How can i do? using AppController?

  On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:

   Indeed, the beforeLayout() callback doesn't seem to work.

   If works if you put it in afterRender() 
   though:http://bin.cakephp.org/view/815089959
   (tested this time)

   (same usage)

   hth
   grigri

   On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

Hi grigri
Thanks for the reply.

I followed your suggestions but i can't get the code work.

No errors but also no outputs :\

BTW i modified a little bit the layout code

        body
                div id=container
                        div id=header?php if 
(isset($header_for_layout)) { echo
$header_for_layout; } ?/div
                        div id=leftbar?php if 
(isset($leftbar_for_layout)) {  echo
$leftbar_for_layout; } ?/div
                        div id=rightbar?php if 
(isset($rightbar_for_layout)) {  echo
$rightbar_for_layout; } ?/div
                        div id=content?php if 
(isset($content_for_layout)) {  echo
$content_for_layout; } ?/div
                        div id=footer?php if 
(isset($footer_for_layout)) {  echo
$footer_for_layout; } ?/div
                /div
        /body

Sorry for my n00bness :(

On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

 Off the top of my head, I'd suggest using a helper combined with
 output buffering, like this:

 class ChunksHelper extends AppHelper {
   var $chunkId = null;
   var $append = false;
   var $buffer = array();

   function begin($chunkId, $append = false) {
     if (empty($this-chunkId)) {
       $this-chunkId = $chunkId;
       $this-append = $append;
       ob_start();
     }
   }

   function end() {
     if (!empty($this-chunkId)) {
       $contents = ob_get_clean();
       if ($this-append) {
         if (isset($this-buffer[$this-chunkId])) {
           $this-buffer[$this-chunkId] .= $contents;
         }
         else {
           $this-buffer[$this-chunkId] = $contents;
         }
       }
       else {
         $this-buffer[$this-chunkId] = $contents;
       }
       $this-chunkId = false;
     }
   }

   function beforeLayout() {
     $View = ClassRegistry::getObject('View');
     foreach($this-buffer as $key = $value) {
       $View-set($key . '_for_layout', $value);
     }
   }

 }

 Then in your view:

 ?php $chunks-begin('rightbar'); ?
 This will end up in the right bar
 ?php $chunks-end(); ?

 (The code might need a bit of modifying; I just wrote it quickly, but
 the idea is sound. You'll definitely want to add error-checking)

 hth
 grigri

 On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

  Hello all.
  First time posting here.

  I have a 3-column layout where the 3rd column is intended to be a
  menu.
  here's the code

  html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
          head
                  ?php
                          echo $scripts_for_layout;
                          echo $html-css(green, stylesheet);
                  ?
                  titleErny - ?php echo $title_for_layout; 
  ?/title
          /head
          body
                  div id=container
                          div id=header?php echo 
  $header_for_layout; ?/div
                          div id=leftbar?php echo 
  $leftbar_for_layout; ?/div
                          div id=rightbar?php echo 
  $rightbar_for_layout; ?/div
                          div id=content?php echo 
  $content_for_layout; ?/div
     

Re: Variating right menu based on content

2008-11-14 Thread i_Am_ToO_SeXy

Uhm... if i check for empty chunks before the layout render (for
example in App_Controller)?

the only code in layout will be something like

?php $something_for_layout ?

it will be easier to change layout in future.

am i right?

On 14 Nov, 09:51, grigri [EMAIL PROTECTED] wrote:
 If it's the same header on every view, just call it in the layout.

 If, on the other hand, it's the same header in MOST views, use the
 chunks helper as above:

 some_view.ctp:

 ?php $chunks-begin('header'); ?
 This will end up in the header
 ?php $chunks-end(); ?

 your_layout.ctp:

 ?php
 if (!empty($header_for_layout)) {
   // A header has been defined in the view, so show it
   echo $header_for_layout;}

 else {
   // No header has been defined; use the default one
   echo $this-element('default_header');}

 ?

 elements/default_header.ctp:

 This is the default header

 Easy, huh?

 hth
 grigri

 On Nov 13, 5:14 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:



  Uhm... another little problem...

  What about a default Header? (Same header on every view)

  How can i do? using AppController?

  On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:

   Indeed, the beforeLayout() callback doesn't seem to work.

   If works if you put it in afterRender() 
   though:http://bin.cakephp.org/view/815089959
   (tested this time)

   (same usage)

   hth
   grigri

   On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

Hi grigri
Thanks for the reply.

I followed your suggestions but i can't get the code work.

No errors but also no outputs :\

BTW i modified a little bit the layout code

        body
                div id=container
                        div id=header?php if 
(isset($header_for_layout)) { echo
$header_for_layout; } ?/div
                        div id=leftbar?php if 
(isset($leftbar_for_layout)) {  echo
$leftbar_for_layout; } ?/div
                        div id=rightbar?php if 
(isset($rightbar_for_layout)) {  echo
$rightbar_for_layout; } ?/div
                        div id=content?php if 
(isset($content_for_layout)) {  echo
$content_for_layout; } ?/div
                        div id=footer?php if 
(isset($footer_for_layout)) {  echo
$footer_for_layout; } ?/div
                /div
        /body

Sorry for my n00bness :(

On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

 Off the top of my head, I'd suggest using a helper combined with
 output buffering, like this:

 class ChunksHelper extends AppHelper {
   var $chunkId = null;
   var $append = false;
   var $buffer = array();

   function begin($chunkId, $append = false) {
     if (empty($this-chunkId)) {
       $this-chunkId = $chunkId;
       $this-append = $append;
       ob_start();
     }
   }

   function end() {
     if (!empty($this-chunkId)) {
       $contents = ob_get_clean();
       if ($this-append) {
         if (isset($this-buffer[$this-chunkId])) {
           $this-buffer[$this-chunkId] .= $contents;
         }
         else {
           $this-buffer[$this-chunkId] = $contents;
         }
       }
       else {
         $this-buffer[$this-chunkId] = $contents;
       }
       $this-chunkId = false;
     }
   }

   function beforeLayout() {
     $View = ClassRegistry::getObject('View');
     foreach($this-buffer as $key = $value) {
       $View-set($key . '_for_layout', $value);
     }
   }

 }

 Then in your view:

 ?php $chunks-begin('rightbar'); ?
 This will end up in the right bar
 ?php $chunks-end(); ?

 (The code might need a bit of modifying; I just wrote it quickly, but
 the idea is sound. You'll definitely want to add error-checking)

 hth
 grigri

 On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

  Hello all.
  First time posting here.

  I have a 3-column layout where the 3rd column is intended to be a
  menu.
  here's the code

  html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
          head
                  ?php
                          echo $scripts_for_layout;
                          echo $html-css(green, stylesheet);
                  ?
                  titleErny - ?php echo $title_for_layout; 
  ?/title
          /head
          body
                  div id=container
                          div id=header?php echo 
  $header_for_layout; ?/div
                          div id=leftbar?php echo 
  $leftbar_for_layout; ?/div
                          div id=rightbar?php echo 
  $rightbar_for_layout; ?/div
                          div id=content?php echo 
  $content_for_layout; ?/div
                          div id=footer?php echo 
  $footer_for_layout; ?/div
                  /div
          /body
  

Re: Variating right menu based on content

2008-11-13 Thread i_Am_ToO_SeXy

Hi grigri
Thanks for the reply.

I followed your suggestions but i can't get the code work.

No errors but also no outputs :\

BTW i modified a little bit the layout code

body
div id=container
div id=header?php if (isset($header_for_layout)) { 
echo
$header_for_layout; } ?/div
div id=leftbar?php if (isset($leftbar_for_layout)) 
{  echo
$leftbar_for_layout; } ?/div
div id=rightbar?php if 
(isset($rightbar_for_layout)) {  echo
$rightbar_for_layout; } ?/div
div id=content?php if (isset($content_for_layout)) 
{  echo
$content_for_layout; } ?/div
div id=footer?php if (isset($footer_for_layout)) { 
 echo
$footer_for_layout; } ?/div
/div
/body

Sorry for my n00bness :(


On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:
 Off the top of my head, I'd suggest using a helper combined with
 output buffering, like this:

 class ChunksHelper extends AppHelper {
   var $chunkId = null;
   var $append = false;
   var $buffer = array();

   function begin($chunkId, $append = false) {
     if (empty($this-chunkId)) {
       $this-chunkId = $chunkId;
       $this-append = $append;
       ob_start();
     }
   }

   function end() {
     if (!empty($this-chunkId)) {
       $contents = ob_get_clean();
       if ($this-append) {
         if (isset($this-buffer[$this-chunkId])) {
           $this-buffer[$this-chunkId] .= $contents;
         }
         else {
           $this-buffer[$this-chunkId] = $contents;
         }
       }
       else {
         $this-buffer[$this-chunkId] = $contents;
       }
       $this-chunkId = false;
     }
   }

   function beforeLayout() {
     $View = ClassRegistry::getObject('View');
     foreach($this-buffer as $key = $value) {
       $View-set($key . '_for_layout', $value);
     }
   }

 }

 Then in your view:

 ?php $chunks-begin('rightbar'); ?
 This will end up in the right bar
 ?php $chunks-end(); ?

 (The code might need a bit of modifying; I just wrote it quickly, but
 the idea is sound. You'll definitely want to add error-checking)

 hth
 grigri

 On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:



  Hello all.
  First time posting here.

  I have a 3-column layout where the 3rd column is intended to be a
  menu.
  here's the code

  html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
          head
                  ?php
                          echo $scripts_for_layout;
                          echo $html-css(green, stylesheet);
                  ?
                  titleErny - ?php echo $title_for_layout; ?/title
          /head
          body
                  div id=container
                          div id=header?php echo $header_for_layout; 
  ?/div
                          div id=leftbar?php echo $leftbar_for_layout; 
  ?/div
                          div id=rightbar?php echo $rightbar_for_layout; 
  ?/div
                          div id=content?php echo $content_for_layout; 
  ?/div
                          div id=footer?php echo $footer_for_layout; 
  ?/div
                  /div
          /body
  /html

  The right menu should change his html code based on the current view.
  I googled a lot but the only way i found is to use a Helper inside the
  controller... that's not very MVC-ish...
  So... is there any better way? :)

  Thanks in advance.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: Variating right menu based on content

2008-11-13 Thread i_Am_ToO_SeXy

Oh man that Works!!! :)

Awesome! :)

Thanks a lot.

On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:
 Indeed, the beforeLayout() callback doesn't seem to work.

 If works if you put it in afterRender() 
 though:http://bin.cakephp.org/view/815089959
 (tested this time)

 (same usage)

 hth
 grigri

 On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:



  Hi grigri
  Thanks for the reply.

  I followed your suggestions but i can't get the code work.

  No errors but also no outputs :\

  BTW i modified a little bit the layout code

          body
                  div id=container
                          div id=header?php if 
  (isset($header_for_layout)) { echo
  $header_for_layout; } ?/div
                          div id=leftbar?php if 
  (isset($leftbar_for_layout)) {  echo
  $leftbar_for_layout; } ?/div
                          div id=rightbar?php if 
  (isset($rightbar_for_layout)) {  echo
  $rightbar_for_layout; } ?/div
                          div id=content?php if 
  (isset($content_for_layout)) {  echo
  $content_for_layout; } ?/div
                          div id=footer?php if 
  (isset($footer_for_layout)) {  echo
  $footer_for_layout; } ?/div
                  /div
          /body

  Sorry for my n00bness :(

  On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

   Off the top of my head, I'd suggest using a helper combined with
   output buffering, like this:

   class ChunksHelper extends AppHelper {
     var $chunkId = null;
     var $append = false;
     var $buffer = array();

     function begin($chunkId, $append = false) {
       if (empty($this-chunkId)) {
         $this-chunkId = $chunkId;
         $this-append = $append;
         ob_start();
       }
     }

     function end() {
       if (!empty($this-chunkId)) {
         $contents = ob_get_clean();
         if ($this-append) {
           if (isset($this-buffer[$this-chunkId])) {
             $this-buffer[$this-chunkId] .= $contents;
           }
           else {
             $this-buffer[$this-chunkId] = $contents;
           }
         }
         else {
           $this-buffer[$this-chunkId] = $contents;
         }
         $this-chunkId = false;
       }
     }

     function beforeLayout() {
       $View = ClassRegistry::getObject('View');
       foreach($this-buffer as $key = $value) {
         $View-set($key . '_for_layout', $value);
       }
     }

   }

   Then in your view:

   ?php $chunks-begin('rightbar'); ?
   This will end up in the right bar
   ?php $chunks-end(); ?

   (The code might need a bit of modifying; I just wrote it quickly, but
   the idea is sound. You'll definitely want to add error-checking)

   hth
   grigri

   On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

Hello all.
First time posting here.

I have a 3-column layout where the 3rd column is intended to be a
menu.
here's the code

html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
        head
                ?php
                        echo $scripts_for_layout;
                        echo $html-css(green, stylesheet);
                ?
                titleErny - ?php echo $title_for_layout; ?/title
        /head
        body
                div id=container
                        div id=header?php echo $header_for_layout; 
?/div
                        div id=leftbar?php echo 
$leftbar_for_layout; ?/div
                        div id=rightbar?php echo 
$rightbar_for_layout; ?/div
                        div id=content?php echo 
$content_for_layout; ?/div
                        div id=footer?php echo $footer_for_layout; 
?/div
                /div
        /body
/html

The right menu should change his html code based on the current view.
I googled a lot but the only way i found is to use a Helper inside the
controller... that's not very MVC-ish...
So... is there any better way? :)

Thanks in advance.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: Variating right menu based on content

2008-11-13 Thread grigri

Indeed, the beforeLayout() callback doesn't seem to work.

If works if you put it in afterRender() though: 
http://bin.cakephp.org/view/815089959
(tested this time)

(same usage)

hth
grigri

On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:
 Hi grigri
 Thanks for the reply.

 I followed your suggestions but i can't get the code work.

 No errors but also no outputs :\

 BTW i modified a little bit the layout code

         body
                 div id=container
                         div id=header?php if (isset($header_for_layout)) 
 { echo
 $header_for_layout; } ?/div
                         div id=leftbar?php if 
 (isset($leftbar_for_layout)) {  echo
 $leftbar_for_layout; } ?/div
                         div id=rightbar?php if 
 (isset($rightbar_for_layout)) {  echo
 $rightbar_for_layout; } ?/div
                         div id=content?php if 
 (isset($content_for_layout)) {  echo
 $content_for_layout; } ?/div
                         div id=footer?php if (isset($footer_for_layout)) 
 {  echo
 $footer_for_layout; } ?/div
                 /div
         /body

 Sorry for my n00bness :(

 On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

  Off the top of my head, I'd suggest using a helper combined with
  output buffering, like this:

  class ChunksHelper extends AppHelper {
    var $chunkId = null;
    var $append = false;
    var $buffer = array();

    function begin($chunkId, $append = false) {
      if (empty($this-chunkId)) {
        $this-chunkId = $chunkId;
        $this-append = $append;
        ob_start();
      }
    }

    function end() {
      if (!empty($this-chunkId)) {
        $contents = ob_get_clean();
        if ($this-append) {
          if (isset($this-buffer[$this-chunkId])) {
            $this-buffer[$this-chunkId] .= $contents;
          }
          else {
            $this-buffer[$this-chunkId] = $contents;
          }
        }
        else {
          $this-buffer[$this-chunkId] = $contents;
        }
        $this-chunkId = false;
      }
    }

    function beforeLayout() {
      $View = ClassRegistry::getObject('View');
      foreach($this-buffer as $key = $value) {
        $View-set($key . '_for_layout', $value);
      }
    }

  }

  Then in your view:

  ?php $chunks-begin('rightbar'); ?
  This will end up in the right bar
  ?php $chunks-end(); ?

  (The code might need a bit of modifying; I just wrote it quickly, but
  the idea is sound. You'll definitely want to add error-checking)

  hth
  grigri

  On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

   Hello all.
   First time posting here.

   I have a 3-column layout where the 3rd column is intended to be a
   menu.
   here's the code

   html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
           head
                   ?php
                           echo $scripts_for_layout;
                           echo $html-css(green, stylesheet);
                   ?
                   titleErny - ?php echo $title_for_layout; ?/title
           /head
           body
                   div id=container
                           div id=header?php echo $header_for_layout; 
   ?/div
                           div id=leftbar?php echo $leftbar_for_layout; 
   ?/div
                           div id=rightbar?php echo 
   $rightbar_for_layout; ?/div
                           div id=content?php echo $content_for_layout; 
   ?/div
                           div id=footer?php echo $footer_for_layout; 
   ?/div
                   /div
           /body
   /html

   The right menu should change his html code based on the current view.
   I googled a lot but the only way i found is to use a Helper inside the
   controller... that's not very MVC-ish...
   So... is there any better way? :)

   Thanks in advance.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: Variating right menu based on content

2008-11-13 Thread i_Am_ToO_SeXy

Uhm... another little problem...

What about a default Header? (Same header on every view)

How can i do? using AppController?

On 13 Nov, 12:30, grigri [EMAIL PROTECTED] wrote:
 Indeed, the beforeLayout() callback doesn't seem to work.

 If works if you put it in afterRender() 
 though:http://bin.cakephp.org/view/815089959
 (tested this time)

 (same usage)

 hth
 grigri

 On Nov 13, 10:13 am, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:



  Hi grigri
  Thanks for the reply.

  I followed your suggestions but i can't get the code work.

  No errors but also no outputs :\

  BTW i modified a little bit the layout code

          body
                  div id=container
                          div id=header?php if 
  (isset($header_for_layout)) { echo
  $header_for_layout; } ?/div
                          div id=leftbar?php if 
  (isset($leftbar_for_layout)) {  echo
  $leftbar_for_layout; } ?/div
                          div id=rightbar?php if 
  (isset($rightbar_for_layout)) {  echo
  $rightbar_for_layout; } ?/div
                          div id=content?php if 
  (isset($content_for_layout)) {  echo
  $content_for_layout; } ?/div
                          div id=footer?php if 
  (isset($footer_for_layout)) {  echo
  $footer_for_layout; } ?/div
                  /div
          /body

  Sorry for my n00bness :(

  On 12 Nov, 17:55, grigri [EMAIL PROTECTED] wrote:

   Off the top of my head, I'd suggest using a helper combined with
   output buffering, like this:

   class ChunksHelper extends AppHelper {
     var $chunkId = null;
     var $append = false;
     var $buffer = array();

     function begin($chunkId, $append = false) {
       if (empty($this-chunkId)) {
         $this-chunkId = $chunkId;
         $this-append = $append;
         ob_start();
       }
     }

     function end() {
       if (!empty($this-chunkId)) {
         $contents = ob_get_clean();
         if ($this-append) {
           if (isset($this-buffer[$this-chunkId])) {
             $this-buffer[$this-chunkId] .= $contents;
           }
           else {
             $this-buffer[$this-chunkId] = $contents;
           }
         }
         else {
           $this-buffer[$this-chunkId] = $contents;
         }
         $this-chunkId = false;
       }
     }

     function beforeLayout() {
       $View = ClassRegistry::getObject('View');
       foreach($this-buffer as $key = $value) {
         $View-set($key . '_for_layout', $value);
       }
     }

   }

   Then in your view:

   ?php $chunks-begin('rightbar'); ?
   This will end up in the right bar
   ?php $chunks-end(); ?

   (The code might need a bit of modifying; I just wrote it quickly, but
   the idea is sound. You'll definitely want to add error-checking)

   hth
   grigri

   On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:

Hello all.
First time posting here.

I have a 3-column layout where the 3rd column is intended to be a
menu.
here's the code

html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
        head
                ?php
                        echo $scripts_for_layout;
                        echo $html-css(green, stylesheet);
                ?
                titleErny - ?php echo $title_for_layout; ?/title
        /head
        body
                div id=container
                        div id=header?php echo $header_for_layout; 
?/div
                        div id=leftbar?php echo 
$leftbar_for_layout; ?/div
                        div id=rightbar?php echo 
$rightbar_for_layout; ?/div
                        div id=content?php echo 
$content_for_layout; ?/div
                        div id=footer?php echo $footer_for_layout; 
?/div
                /div
        /body
/html

The right menu should change his html code based on the current view.
I googled a lot but the only way i found is to use a Helper inside the
controller... that's not very MVC-ish...
So... is there any better way? :)

Thanks in advance.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Variating right menu based on content

2008-11-12 Thread i_Am_ToO_SeXy

Hello all.
First time posting here.

I have a 3-column layout where the 3rd column is intended to be a
menu.
here's the code

html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
head
?php
echo $scripts_for_layout;
echo $html-css(green, stylesheet);
?
titleErny - ?php echo $title_for_layout; ?/title
/head
body
div id=container
div id=header?php echo $header_for_layout; ?/div
div id=leftbar?php echo $leftbar_for_layout; 
?/div
div id=rightbar?php echo $rightbar_for_layout; 
?/div
div id=content?php echo $content_for_layout; 
?/div
div id=footer?php echo $footer_for_layout; ?/div
/div
/body
/html

The right menu should change his html code based on the current view.
I googled a lot but the only way i found is to use a Helper inside the
controller... that's not very MVC-ish...
So... is there any better way? :)

Thanks in advance.

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: Variating right menu based on content

2008-11-12 Thread grigri

Off the top of my head, I'd suggest using a helper combined with
output buffering, like this:

class ChunksHelper extends AppHelper {
  var $chunkId = null;
  var $append = false;
  var $buffer = array();

  function begin($chunkId, $append = false) {
if (empty($this-chunkId)) {
  $this-chunkId = $chunkId;
  $this-append = $append;
  ob_start();
}
  }

  function end() {
if (!empty($this-chunkId)) {
  $contents = ob_get_clean();
  if ($this-append) {
if (isset($this-buffer[$this-chunkId])) {
  $this-buffer[$this-chunkId] .= $contents;
}
else {
  $this-buffer[$this-chunkId] = $contents;
}
  }
  else {
$this-buffer[$this-chunkId] = $contents;
  }
  $this-chunkId = false;
}
  }

  function beforeLayout() {
$View = ClassRegistry::getObject('View');
foreach($this-buffer as $key = $value) {
  $View-set($key . '_for_layout', $value);
}
  }
}

Then in your view:

?php $chunks-begin('rightbar'); ?
This will end up in the right bar
?php $chunks-end(); ?

(The code might need a bit of modifying; I just wrote it quickly, but
the idea is sound. You'll definitely want to add error-checking)

hth
grigri

On Nov 12, 4:11 pm, i_Am_ToO_SeXy [EMAIL PROTECTED] wrote:
 Hello all.
 First time posting here.

 I have a 3-column layout where the 3rd column is intended to be a
 menu.
 here's the code

 html xmlns=http://www.w3.org/1999/xhtml; lang=en xml:lang=en
         head
                 ?php
                         echo $scripts_for_layout;
                         echo $html-css(green, stylesheet);
                 ?
                 titleErny - ?php echo $title_for_layout; ?/title
         /head
         body
                 div id=container
                         div id=header?php echo $header_for_layout; 
 ?/div
                         div id=leftbar?php echo $leftbar_for_layout; 
 ?/div
                         div id=rightbar?php echo $rightbar_for_layout; 
 ?/div
                         div id=content?php echo $content_for_layout; 
 ?/div
                         div id=footer?php echo $footer_for_layout; 
 ?/div
                 /div
         /body
 /html

 The right menu should change his html code based on the current view.
 I googled a lot but the only way i found is to use a Helper inside the
 controller... that's not very MVC-ish...
 So... is there any better way? :)

 Thanks in advance.
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---