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/