Sascha,
Thanks for the bug report, I have fixed it and committed the fix as well as some changes to the class. I have updated both the working version Xend_Layout, and the for proposal version Zend_Layout.

Kevin McArthur will have tutorials ready pretty soon, but it sounds like you're well ahead of needing those!

Again.. Thanks,
Ralph

Working:
http://svn.ralphschindler.com/repo/Xend/

Proposed Layout (synced with above)
http://svn.ralphschindler.com/repo/ZendFramework/Zend_Layout/

Interesting helpers:
http://svn.ralphschindler.com/repo/ZendFramework/Zend_View-AdditionalHelpers/


Sascha Goebel wrote:
Hi Ralph,

I've been fiddling around with your layout class for the last days and
always asked myself why I had to set the response segment name myself
when using the addRequest method. A little digging into the sources
today gave the answer :-)

In LayoutProcessor.php line 161 the code reads

$this->_layoutManager->setResponseSegmentName($current_request_name);

this should be

$this->_layoutManager->setResponseSegmentName($current_request->getName());

and everything works just fine.

Thanks a lot for your great work on this!

Oh, and for everyone asking what I'm talking about or wanting a small
example, here's what I do to use layout with subparts (say additional
rendered actions):

bootstrap.php
================
// Do this directly before calling dispatch()
Xend_Layout::setup(array('path' => PATH_APPLICATION . 'common' .
DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR));
Xend_Layout::setDefaultLayoutName('base');

ControllerClass where the subpart is needed (best would be to do this
via an extended action controller)
=================================
$this->getHelper('LayoutManager')->getLayout('base')->addRequest(new
Xend_Layout_Request('LoginBox', 'loginbox', 'auth'));

base.phtml (layout)
=======================
<div id="sidebar-left">
<p class="skip-link"><a href="#content"><?php echo $this->_('Skip to
main content'); ?></a></p>
<?php echo $this->LoginBox; ?>
</div>

<div id="content">
<a name="content"></a>
<?php echo $this->content; ?>
</div>

That's it :-)

Thanks again and read you later,
Sascha


Reply via email to