ZF3 のコンテナーから zend ナビゲーションを実装しようとしています。config/autoload/global.php
またはconfig/module.config.php
ファイルに直接ナビゲーションを導入するこのクイック スタート チュートリアルで、ナビゲーションを正常に作成しました。
https://docs.zendframework.com/zend-navigation/quick-start/
しかし、「例で使用されるナビゲーション設定」セクションを使用して、コントローラーからのナビゲーションの変更を許可するヘルパーでこれらを機能させる必要があります。
https://docs.zendframework.com/zend-navigation/helpers/intro/
これは私のModule.phpです
namespace Application;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
use Zend\View\HelperPluginManager;
class Module implements ConfigProviderInterface
{
public function getViewHelperConfig()
{
return [
'factories' => [
// This will overwrite the native navigation helper
'navigation' => function(HelperPluginManager $pm) {
// Get an instance of the proxy helper
$navigation = $pm->get('Zend\View\Helper\Navigation');
// Return the new navigation helper instance
return $navigation;
}
]
];
}
public function getControllerConfig()
{
return [
'factories' => [
$this->getViewHelperConfig()
);
},
],
];
}
}
そして、これは私のIndexController.php です
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Navigation\Navigation;
use Zend\Navigation\Page\AbstractPage;
class IndexController extends AbstractActionController
{
private $navigationHelper;
public function __construct(
$navigationHelper
){
$this->navigationHelper = $navigationHelper;
}
public function indexAction()
{
$container = new Navigation();
$container->addPage(AbstractPage::factory([
'uri' => 'http://www.example.com/',
]));
$this->navigationHelper->plugin('navigation')->setContainer($container);
return new ViewModel([
]);
}
}
しかし、次のエラーが表示されます。
Fatal error: Call to a member function plugin() on array in /var/www/html/zf3/module/Application/src/Controller/IndexController.php on line 50
チュートリアルでは、次のステートメントを使用します。
// Store the container in the proxy helper:
$view->plugin('navigation')->setContainer($container);
// ...or simply:
$view->navigation($container);
しかし、これが何であるかわからない$view
ので、私のModule.php$navigation
からのものだと思います。問題は、配列であるため、エラーがスローされることです。質問は次のとおりです。
- 私は何を間違っていますか?
- この
$view
チュートリアルはどこから来たのですか? - Module.phpを機能させるには、何を渡す必要がありますか?
前もって感謝します!