Thanks for clarifying this, guys. This seems like something that might come up a lot over time. I know that I wrote a pre-1.5 ViewRenderer plugin that performed this logic for me (I used an optional view script setup, too), and it was something of a pain to dig the logic out of ViewRenderer directly. I haven't dug into the 1.5 version yet, but I anticipate easier going with the Layout stuff and the like.

On Apr 13, 2008, at 2:48 PM, kirpit wrote:

Yes Matthew. Thank you for telling me that I've wasted 2 days of my life for this.

Just in case or might be a feedback; The last added path is supposed to be used for rendering. But if there the default view folder exists, it still looks and renders it first. (ZF 1.5.1)

part of $view dump;
[script] => Array
(
[0] => .\application\views\scripts\
[1] => .\templates\default\scripts\
)

So it is done with using viewRenderer but remember to remove application/view (or whatever) folder to work as we want. Adding another base (or script) paths works as expected.

Cheers and thanks again.



2008/4/13, Matthew Weier O'Phinney <[EMAIL PROTECTED]>:
-- kirpit <[EMAIL PROTECTED]> wrote
(on Sunday, 13 April 2008, 03:22 PM +0300):

> Hi, im just a newbie with ZF.
>
> I just wanted to move view folder to another path. It seems it can be done with
> addBasePath() but here comes the questions.
>
> It does work if i add "$this->view->addBasePath..." in the current
> action but isn't it stupid to add this line in every action?
> So i've tried $this->view->addBasePath... in controller's init()
> function which works too. But honestly, this is not the correct way neither.
>
> Suppose i prepared my $view object with all the paths helpers etc. and put it
> in registry. Then calling it with:
>
> public function init() {
> this->view = Zend_Registry::get('view');
> }
>
> Which simply does not work. Im trying to do that around 2 days and i gave up.
> Everything looks ok in action:
> public function indexAction() {
>   print_r($this->view);
> }
> gives the correct dump of view paths but it just NOT working.
>
> Also i think it's stupid to assign view object from registry in
> every controller's init. Don't we have some mothod like;
> $controller->setParam('defaultViewObject', $view);
> we can do it in bootstrap only once after setting everything about $view?


The ViewRenderer contains the view instance used for auto-rendering and
used by Zend_Layout by default. The easiest way to setup your view
object with your own settings is to create it in the bootstrap or an
early-running plugin and register it with the ViewRenderer:

    $view = new Zend_View();
$view->addScriptPath('path/to/default/scripts'); // or addBasePath(), if you prefer $viewRenderer = Zend_Controller_Action_HelperBroker:;getStaticHelper('viewRenderer');
    $viewRenderer->setView($view);

Once you've done this, the paths you set will be available throughout
your application.


--
Matthew Weier O'Phinney
Software Architect       | [EMAIL PROTECTED]
Zend - The PHP Company   | http://www.zend.com/


Reply via email to