我在应用程序模块中创建了一个帮助程序,它完美地运行。当我尝试从其他模块(例如用户)加载它时,它告诉我它无法找到该类。
Class' Application \ View \ Helper \ Footertable'找不到
我尝试将此代码作为应用程序模块放在module.config.php中,即使在用户模块的同一文件中也是如此。
'view_helpers' => array (
'invokables' => array (
'footertable' => 'Application\View\Helper\Footertable'
)
),
我认为这是自动加载类的问题,但是当你在另一个模块中时,我无法找到有关如何加载此帮助程序的信息
我使用
在视图文件中调用帮助器$this->footertable()
在应用程序模块中完美运行,但在用户模块中无法正常工作
任何想法?
您好, 但我的代码是正确的
<?php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
class Footertable extends AbstractHelper{
protected $inizioFine;
protected $numero;
public function __invoke($inizioFine,$numero){
$this->inizioFine = $inizioFine;
$this->numero = $numero;
echo sprintf('Mostra %d a %d di %d record',$this->inizioFine['start'],$this->inizioFine['end'],$this->numero);
}
}
配置中的空格是副本&amp;过去的错误。 我仍有同样的问题:无法从其他模块加载助手
更新完整错误
Fatal error: Class 'Application\View\Helper\Footertable' not found in D:\www\httpdocs\test\vendor\zendframework\zendframework\library\Zend\ServiceManager\AbstractPluginManager.php on line 170
路径
D:\www\httpdocs\test\module\Application\src\View\Helper\Footertable.php
答案 0 :(得分:1)
您的配置似乎很好。可能问题出在你的助手类签名中。
由于PhpRenderer组成了一个HelperPluginManager实例来管理帮助程序,因此您的帮助程序应该实现HelperInterface(1)以正确注册。此外,您应该在助手中编写一个__invoke()
方法,以通过方法调用来调用它。 (2)
因此,在您的Footertable
课程中,只需扩展AbstractHelper
并确保您拥有_invoke()
方法。这是编写自定义view helpers in documentation的推荐方法。
例如:
<?php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;
class Footertable extends AbstractHelper
{
public function __invoke()
{
return 'bar';
}
}
并在您的观看中使用它:
echo $this->footertable();
它应该有用。
注意:您还必须在模块配置的invokables部分注册所有帮助程序(和其他类),反斜杠之间没有空格:
<强>错误:强>
'footertable' => 'Application \ View \ Helper \ Footertable'
<强>正确:强>
'footertable' => 'Application\View\Helper\Footertable'
答案 1 :(得分:1)
您发布的路径看起来并不正确。应用程序模块的src
中的所有文件都应位于名为Application
的文件夹中,因为它是您的顶级命名空间。所以路径应该是:
d:\ WWW \的httpdocs \测试\模块\应用程序\ SRC \应用程序\视图\助手\ Footertable.php
这可以解释为什么帮助者不能自动加载,但如果是这种情况,我不明白它在应用程序模块中是如何工作的。