Matt
Apologies the stuff I needed was in the docs.
However still no joy, this is my stack output for the view - and I
assume if the new path was registered correctly then it would show up in
here
Zend_View Object
(
[_path:private] => Array
(
[script] => Array
(
[0] => sites\admintrianglesolutions\views\scripts\
)
[helper] => Array
(
[0] => Array
(
[prefix] => Zend_View_Helper_
[dir] =>
sites\admintrianglesolutions\views\helpers\
)
[1] => Array
(
[prefix] => Zend_View_Helper_
[dir] =>
D:\AWebEnvironment\ZendFramework-1.0.3\library\Zend\View\Helper\
)
)
Registering the path - tried in controller and a few other places.
$view = new Zend_View();
// Add /other/path/to/helpers with class prefix 'Your_View_Helper'
$view->addHelperPath('D:\AWebEnvironment\htdocs\Site_Template\library\Common\Components',
'Common_Components');
My helper class taken from the example.
<?php
class Common_Components_SpecialPurpose
{
protected $_count = 0;
public function specialPurpose()
{
$this->_count++;
$output = "I have you {$this->_count} time(s).";
return htmlspecialchars($output);
}
}
Ok having debugged the View files in the Framework it seems that I am
instantiating the View class adding the helpers - below is an output of
_path
Array
(
[script] => Array
(
)
[helper] => Array
(
[0] => Array
(
[prefix] => Common_Components_
[dir] => library\Common\Components\
)
[1] => Array
(
[prefix] => Common_Components_
[dir] =>
D:\AWebEnvironment\htdocs\Site_Template\library\Common\Components\
)
)
but then the view is getting instantiated again somewhere and killing my
adding paths with its own SetPath
Same output of _path
[helper] => Array
(
[0] => Array
(
[prefix] => Zend_View_Helper_
[dir] => sites\admintrianglesolutions\views\helpers\
)
[1] => Array
(
[prefix] => Zend_View_Helper_
[dir] =>
D:\AWebEnvironment\ZendFramework-1.0.3\library\Zend\View\Helper\
)
)
So its basicalyl getting overwritten later on. Should this happen?
I am not calling new Zend_View anywhere else in my code - so it must be
when the viewRenderer is automatically instantiated
find this very wierd
Ian
Matthew Weier O'Phinney wrote:
-- Ian Warner <[EMAIL PROTECTED]> wrote
(on Sunday, 20 January 2008, 07:54 PM +0000):
$view = new Zend_View();
// Add /other/path/to/helpers with class prefix 'Your_View_Helper'
$view->setHelperPath('D:\AWebEnvironment\htdocs\Site_Template\library\Zend\View\Helper',
'Common_Components');
I have tried the above and also with addHelperPath and still no luck -
tried this on my ubuntu machine also.
whats the naming convention for helpers, the docs dont give any advice on
what the actual file name should be
Not to be mean, but they *do* spell it out, several times:
http://framework.zend.com/manual/en/zend.view.helpers.html
Second paragraph:
"A helper is simply a class. Let's say we want a helper named
'fooBar'. By default, the class is prefixed with 'Zend_View_Helper_'
(you can specify a custom prefix when setting a helper path), and
the last segment of the class name is the helper name; this segment
should be TitleCapped; the full class name is then:
Zend_View_Helper_FooBar."
And further in that same page:
37.4.3. Writing Custom Helpers
Writing custom helpers is easy; just follow these rules:
* The class name must, at the very minimum, end with the
helper name itself, using CamelCaps. E.g., if you were
writing a helper called "specialPurpose", the class name
would minimally need to be "SpecialPurpose". You may,
and should, give the class name a prefix, and it is
recommended that you use 'View_Helper' as part of that
prefix: "My_View_Helper_SpecialPurpose". (You will need
to pass in the prefix, with or without the trailing
underscore, to addHelperPath() or setHelperPath()).
There's also one other place it's mentioned, in the section detailing
helper paths.
So, in your example, if you have the prefix "Common_Components" as your
view helper class prefix, and your library code is in
"D:\AWebEnvironment\htdocs\Site_Template\Library\', the most logical
place to put these helpers would be in the "Common\Components\"
subdirectory of that location, and you would then add the following path
to your view helper paths:
$view->addHelperPath('D:\AWebEnvironment\htdocs\Site_Template\Library\Common\Components\',
'Common_Components');
If you then have a "foo" helper, it would be in the 'Foo.php'
file in that directory, and have the class name Common_Components_Foo.
Hope that helps.
Matthew Weier O'Phinney wrote:
-- Ian Warner <[EMAIL PROTECTED]> wrote
(on Sunday, 20 January 2008, 01:00 PM +0000):
Sorry I should have said that I tried that also.
Still no luck
I use code like the following code regularly:
$view->addHelperPath('path/to/My/View/Helper', 'My_View_Helper');
and it works fine. Can you send me the code you used when trying
addHelperPath()?
Pieter wrote:
Hi Ian,
I think that you should use the $view->addHelperPath() function.
Regards,
Pieter Kokx
Ian Warner schreef:
hi
I am having real trouble trying to set helper paths.
I assume I can place this anywhere in my code structure - I have tried
in bootstrap / controllers and a few other places
Pathing - I think I have this correct below though I although I have
changed this any which way but loose.
$view = new Zend_View();
// Add /other/path/to/helpers with class prefix
'Your_View_Helper'
$view->setHelperPath('D:\AWebEnvironment\htdocs\Site_Template\library\Zend\View\Helper',
'Common_Components');
I have this when I throw the stack in the view.
[_path:private] => Array
(
[script] => Array
(
[0] => sites\admintrianglesolutions\views\scripts\
)
[helper] => Array
(
[0] => Array
(
[prefix] => Zend_View_Helper_
[dir] =>
sites\admintrianglesolutions\views\helpers\
)
[1] => Array
(
[prefix] => Zend_View_Helper_
[dir] =>
D:\AWebEnvironment\ZendFramework-1.0.3\library\Zend\View\Helper\
)
)