thanks Matthew

Oh man i feel like such a muppet now, your analysis was bang on the money. I wasnt sure what could be the problem so i just poored everything into an email hoping it would make someone else that wasnt staring at it for hours.

bram

On Aug 6, 2008, at 3:47 PM, Matthew Weier O'Phinney wrote:

Lots of environmental information -- thanks, as it helps provided
context. However, as a result, I'm going to top-post to get right to the
heart of the issue: you never registered your custom view helper path.
You have the following line:

   Zend_Controller_Action_HelperBroker::addPrefix('core_Helper_View');

but that's registering the prefix with the _ACTION_ helper broker, not
the view. You need to add the following line:

   $view->addHelperPath('core/Helper/View/', 'core_Helper_View');

in your Initialize class' initView() method. I'd also remove that action
helper broker registration, as you almost certainly didn't intend for
that.

-- Bram Vogelaar <[EMAIL PROTECTED]> wrote
(on Wednesday, 06 August 2008, 10:59 AM +0200):
Dear All

I currently trying to get a view helper to work  and as soon as i
include a custom view helper in a view using <?= $this- >MyNewViewHelper
?>
the resulting rendered view is empty/blank. I would really appreciate if someone could shed some light on what i am doing wrong as I have tried
to use v1.53, v1.6 RC1 and standard\branches\release-1.6. of the
framework and I can t get any to work and no errors show up in the
apache or php log.

with regards
Bram

i am  currently utilizing the following project layout on OS X 10.5.4
using xampp 0.7.2 with /path/to/php, /path/to/pear, /path/to/ Library and
/path/to/application as included folders

htdocs
        |-> index.php

<index.php>
   require_once('Zend/Loader.php');

   Zend_Loader::registerAutoload();

   $front = Zend_Controller_Front::getInstance();
   $front->registerPlugin(new core_Initialize());
   $front->dispatch();
</index.php>

Library
        |->Zend
application
        |->modules
                |->default
                        |->controllers
                                |->IndexController.php
                        |->models
                        |->views
                                |>scripts
                                        |->index
                                                |->index.phtml
        |->core
                |->config
                |->tmp
                |->logs
                |->Acl
                |->Plugin
                |->Helper
                        |>View
                                |-> MyNewViewHelper.php
                |->Theme
                        |->layout.phtml
                |->initialize.php

<IndexContolller.php>
class IndexController extends Zend_Controller_Action
{
   public function indexAction()
   {
       $this->view->headTitle('Dashboard');
   }
}
</IndexContolller.php>

<index.phtml>
<h2>hello world</h2>
</index.phtml>
        
<layout.phtml>
  <?= $this->headTitle() ?>
  <?= $this->MyNewViewHelper() ?>
  <?= $this->layout()->content ?>
</layout.phtml>

<MyNewViewHelper.php> (which is a copy of Zend_View_Helper_Url)

class core_Helper_View_MyNewViewHelper {

   public function url(array $urlOptions = array(), $name = null,
$reset = false, $encode = true)
   {
       $router = Zend_Controller_Front::getInstance()->getRouter();
       return $router->assemble($urlOptions, $name, $reset, $encode);
   }

}
</MyNewViewHelper.php>

<part of initialize.php>

$this->_root = realpath(dirname(__FILE__) . '/../../');

public function routeStartup()
   {
       $this->initHelpers();
       $this->initView();
       $this->initControllers();

       $this->_front->throwExceptions(false);
   }

   public function initHelpers()
   {

Zend_Controller_Action_HelperBroker::addPrefix('core_Helper_View');
   }

   public function initView()
   {
       // Setup View
       $view = new Zend_View();

       // Set view in ViewRenderer
       $viewRenderer =
Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
       $viewRenderer->setView($view);

Zend_Layout::startMvc($this->_root . '/application/core/ Theme');
       $request = Zend_Controller_Front::getInstance()->getRequest();
   }

   public function initControllers()
   {
       $this->_front->addModuleDirectory($this->_root . '/
application/modules/');
   }
</part of initialize.php>


--
Matthew Weier O'Phinney
Software Architect       | [EMAIL PROTECTED]
Zend Framework           | http://framework.zend.com/

Reply via email to