2016-08-28 6 views
0

1人1人。 ZendFramework2の新機能です。私は2つのモジュール---ユーザーモジュールと管理モジュールを持っている最もシンプルなプロジェクトを持っています。ユーザモジュールにはログインと登録があり、管理モジュールにはそのメニューにプロファイルとログアウトがあります。私は管理者とユーザーのモジュールのための異なるメニューを持っていたい。 Navigationを使って、正しく動作するmodule.config.phpのadmin用メニューを作成しました。私はまた、ユーザーと管理者の両方のモジュールに異なるレイアウトを使用しました。しかし、ユーザーモジュール用のナビゲーションを使用しようとすると、管理モジュールのナビゲーションにアクセスします。 私に助けてください。偉大な人と鑑賞者以外には、先生もサポーターもいないからです。モジュールごとに異なるメニュー

私のコードは以下の通りです:

<?php echo $this->doctype(); ?> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
<?php echo $this->headTitle('ZF2 '. $this->translate('Transport Information System'))->setSeparator(' - ')->setAutoEscape(false) ?> 
<?php echo $this->headMeta() 
     ->appendName('viewport', 'width=device-width, initial-scale=1.0') 
     ->appendHttpEquiv('X-UA-Compatible', 'IE=edge') 
    ?> 
<!-- Le styles --> 
    <?php echo $this->headLink(array('rel' => 'shortcut icon', 'type' => 'image/vnd.microsoft.icon', 'href' => $this->basePath() . '/img/favicon.ico')) 
        ->prependStylesheet($this->basePath('css/style.css')) 
        ->prependStylesheet($this->basePath('css/bootstrap-theme.min.css')) 
        ->prependStylesheet($this->basePath('css/bootstrap.min.css')) ?> 

    <!-- Scripts --> 
    <?php echo $this->headScript() 
     ->prependFile($this->basePath('js/bootstrap.min.js')) 
     ->prependFile($this->basePath('js/jquery.min.js')) 
     ->prependFile($this->basePath('js/respond.min.js'), 'text/javascript', array('conditional' => 'lt IE 9',)) 
     ->prependFile($this->basePath('js/html5shiv.min.js'), 'text/javascript', array('conditional' => 'lt IE 9',)) 
    ; ?> 

</head> 
<body> 
    <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> 
     <div class="container"> 
      <div class="navbar-header"> 
       <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
       </button> 
       <a class="navbar-brand" href="<?php echo $this->url('home') ?>"><img src="<?php echo $this->basePath('img/zf2-logo.png') ?>" alt="Zend Framework 2"/>&nbsp;<?php echo $this->translate('Transport Information System') ?></a> 
      </div> 

      <div class="collapse navbar-collapse"> 
       <?php 

       echo $this->navigation('navigation') 
          ->menu() 
          ->setMinDepth(0) 
          ->setMaxDepth(0) 
          ->setUlClass('nav navbar-nav'); 

       ?> 
      </div> 


     </div> 
    </nav> 
    <div class="container"> 
     <?php echo $this->content; ?> 
     <hr> 
     <footer> 
      <p align="center">Copyright will be updated very soon [email protected]<?php echo $this->translate('All rights reserved.') ?></p> 
     </footer> 
    </div> <!-- /container --> 
    <?php echo $this->inlineScript() ?> 
</body> 

module.config:ユーザーモジュールのユーザーモジュール

<?php 
return array(
'controllers' => array(
    'invokables' => array( 
     'Users\Controller\Register' => 'Users\Controller\RegisterController', 
     'Users\Controller\Login' => 'Users\Controller\LoginController',    
    ), 
), 

'router' => array(
    'routes' => array(
     'users' => array(
      'type' => 'Literal', 
      'options' => array( 
       'route' => '/users',     
       'defaults' => array(
        'controller' => 'Users\Controller\Login', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(      
       'login' => array(
        'type' => 'Segment', 
        'may_terminate' => true, 
        'options' => array(
         'route' => '/login[/:action]', 
         'constraints' => array(
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
          'controller' => 'Users\Controller\Login', 
          'action'  => 'index', 
         ),        
        ), 
       ), 

       'register' => array(
        'type' => 'Segment', 
        'may_terminate' => true, 
        'options' => array(
         'route' => '/register[/:action]', 
         'constraints' => array(
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
          'controller' => 'Users\Controller\Register', 
          'action'  => 'index', 
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
), 



'service_manager' => array(
    'abstract_factories' => array(
     'Zend\Cache\Service\StorageCacheAbstractServiceFactory', 
     'Zend\Log\LoggerAbstractServiceFactory', 
    ), 
    'factories' => array(
     'translator' => 'Zend\Mvc\Service\TranslatorServiceFactory', 
     'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory', 
    ), 
), 

'view_manager' => array(
    'template_map' => array(
     'layout/layout_users' => __DIR__ . '/../view/layout/layout.phtml', 
    ), 

    'template_path_stack' => array(
     'users' => __DIR__ . '/../view', 
    ), 
), 

'navigation' => array(
    'default' => array(
     array(
      'label' => 'Login', 
      'route' => 'login', 
     ), 

     array(
      'label' => 'Register', 
      'route' => 'register', 
     ), 
    ), 
), 

); 

layout.phtmlため

module.config.php管理者用.php:

管理モジュールの
<?php 

namespace Admin; 

return array(
'router' => array(
    'routes' => array(
     'home' => array(
      'type' => 'Zend\Mvc\Router\Http\Literal', 
      'options' => array(
       'route' => '/', 
       'defaults' => array(
        'controller' => 'Admin\Controller\Index', 
        'action'  => 'index', 
       ), 
      ), 
     ), 



     'profile' => array(
      'type' => 'Segment', 
      'may_terminate' => true, 
      'options' => array(
       'route' => '/profile[/:action]', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
       ), 
       'defaults' => array(
        'controller' => 'Admin\Controller\Profile', 
        'action' => 'index', 
       ), 
      ), 
     ), 

     'logout' => array(
      'type' => 'Segment', 
      'may_terminate' => true, 
      'options' => array(
       'route' => '/users/logout', 
       'defaults' => array(
        'controller' => 'Users\Controller\Login', 
        'action' => 'logout', 
       ), 
      ), 
     ), 

'admin' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/admin', 
       'defaults' => array(
        '__NAMESPACE__' => 'Admin\Controller', 
        'controller' => 'Index', 
        'action'  => 'index', 
       ), 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'default' => array(
        'type' => 'Segment', 
        'options' => array(
         'route' => '/[:controller[/:action]]', 
         'constraints' => array(
          'controller' => '[a-zA-Z][a-zA-Z0-9_-]*', 
          'action'  => '[a-zA-Z][a-zA-Z0-9_-]*', 
         ), 
         'defaults' => array(
         ), 
        ), 
       ), 
      ), 
     ), 
    ), 
), 

'service_manager' => array(
    'abstract_factories' => array(
     'Zend\Cache\Service\StorageCacheAbstractServiceFactory', 
     'Zend\Log\LoggerAbstractServiceFactory', 
    ), 
    'factories' => array(
     'translator' => 'Zend\Mvc\Service\TranslatorServiceFactory', 
     'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory', 
    ), 
), 
'translator' => array(
    'locale' => 'en_US', 
    'translation_file_patterns' => array(
     array(
      'type'  => 'gettext', 
      'base_dir' => __DIR__ . '/../language', 
      'pattern' => '%s.mo', 
     ), 
    ), 
), 

'controllers' => array(
    'invokables' => array(
     // 'Admin\Controller\Index' => Controller\IndexController::class 
     'Admin\Controller\Index' => 'Admin\Controller\IndexController', 
     'Admin\Controller\Profile' => 'Admin\Controller\ProfileController', 

     'Admin\Controller\Provinces' => 'Admin\Controller\ProvincesController', 
     'Admin\Controller\Districts' => 'Admin\Controller\DistrictsController', 
     'Admin\Controller\Cities' => 'Admin\Controller\CitiesController', 
     'Admin\Controller\Stations' => 'Admin\Controller\StationsController',   
     'Admin\Controller\Services' => 'Admin\Controller\ServicesController', 
     'Admin\Controller\Vehicles' => 'Admin\Controller\VehiclesController', 

    ), 
), 
'view_manager' => array(
    'display_not_found_reason' => true, 
    'display_exceptions'  => true, 
    'doctype'     => 'HTML5', 
    'not_found_template'  => 'error/404', 
    'exception_template'  => 'error/index', 
    'template_map' => array(


     'layout/layout_admin'   => __DIR__ . '/../view/layout/layout.phtml', 
     'admin/index/index' => __DIR__ . '/../view/admin/index/index.phtml', 
     'error/404'    => __DIR__ . '/../view/error/404.phtml', 
     'error/index'    => __DIR__ . '/../view/error/index.phtml', 
    ), 
    'template_path_stack' => array(
     __DIR__ . '/../view', 
    ), 
), 

// Placeholder for console routes 
'console' => array(
    'router' => array(
     'routes' => array(
     ), 
    ), 
), 

'navigation' => array(
    'default' => array(
     array(
      'label' => 'Home', 
      'route' => 'home', 
     ), 

     array(
      'label' => 'Profile', 
      'route' => 'profile', 
     ), 

     array(
      'label' => 'Logout', 
      'route' => 'logout', 
     ), 

    ), 
), 
); 

layout.phtml:

<?php echo $this->doctype(); ?> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
<?php echo $this->headTitle('ZF2 '. $this->translate('Transport Information System'))->setSeparator(' - ')->setAutoEscape(false) ?> 

    <?php echo $this->headMeta() 
     ->appendName('viewport', 'width=device-width, initial-scale=1.0') 
     ->appendHttpEquiv('X-UA-Compatible', 'IE=edge') 
    ?> 

    <!-- Le styles --> 
    <?php echo $this->headLink(array('rel' => 'shortcut icon', 'type' => 'image/vnd.microsoft.icon', 'href' => $this->basePath() . '/img/favicon.ico')) 
        ->prependStylesheet($this->basePath('css/style.css')) 
        ->prependStylesheet($this->basePath('css/bootstrap-theme.min.css')) 
        ->prependStylesheet($this->basePath('css/bootstrap.min.css')) ?> 

    <!-- Scripts --> 
    <?php echo $this->headScript() 
     ->prependFile($this->basePath('js/bootstrap.min.js')) 
     ->prependFile($this->basePath('js/jquery.min.js')) 
     ->prependFile($this->basePath('js/respond.min.js'), 'text/javascript', array('conditional' => 'lt IE 9',)) 
     ->prependFile($this->basePath('js/html5shiv.min.js'), 'text/javascript', array('conditional' => 'lt IE 9',)) 
    ; ?> 

</head> 
<body> 
    <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"> 
     <div class="container"> 
      <div class="navbar-header"> 
       <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
        <span class="icon-bar"></span> 
       </button> 
       <a class="navbar-brand" href="<?php echo $this->url('home') ?>"><img src="<?php echo $this->basePath('img/zf2-logo.png') ?>" alt="Zend Framework 2"/>&nbsp;<?php echo $this->translate('Transport Information System') ?></a> 
      </div> 


      <div class="collapse navbar-collapse"> 
       <?php // <-- Update this !! 

       echo $this->navigation('navigation') 
          ->menu() 
          ->setMinDepth(0) 
          ->setMaxDepth(0) 
          ->setUlClass('nav navbar-nav'); 

       ?> 
      </div> 


     </div> 
    </nav> 
    <div class="container"> 
     <?php echo $this->content; ?> 
     <hr> 
     <footer> 
      <p align="center">Copyright will be updated very soon [email protected]<?php echo $this->translate('All rights reserved.') ?></p> 
     </footer> 
    </div> <!-- /container --> 
    <?php echo $this->inlineScript() ?> 
</body> 

答えて

0

私は管理者のナビゲーションメニューを持っているように私は私のコードで探しています。

あなたの管理モジュールには、Zend \ Navigation \ Serviceフォルダに保存した次のファイルが必要です。

namespace Admin\Zend\Navigation\Service; 

use Zend\Navigation\Service\DefaultNavigationFactory; 

class AdminNavigationFactory extends DefaultNavigationFactory 
{ 
    protected function getName() 
    { 
     return 'admin_navigation'; 
    } 
} 

あなたのmodule.configに必要です。

'navigation' => array(
    'admin_navigation' => array(
     array(
      'label' => 'Home', 
      'route' => 'home', 
     ), 

     array(
      'label' => 'Profile', 
      'route' => 'profile', 
     ), 

     array(
      'label' => 'Logout', 
      'route' => 'logout', 
     ), 

    ), 
), 

最後に、管理モジュールのlayout.phtmlファイルに必要です。

echo $this->navigation('admin_navigation') 
          ->menu() 
          ->setMinDepth(0) 
          ->setMaxDepth(0) 
          ->setUlClass('nav navbar-nav'); 

これがうまくいけばうまくいきます。

この時計を見たい場合もあります。Zend Framework 2 Secondary Navigation With Acl

関連する問題