3

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を機能させるには、何を渡す必要がありますか?

前もって感謝します!

4

1 に答える 1