2016-08-28 6 views
0

마다 하나씩. 나는 ZendFramework2를 처음 접했습니다. 나는 두 개의 모듈 --- 사용자 모듈과 관리 모듈을 가지고있는 가장 단순한 프로젝트를 가지고있다. 사용자 모듈에는 로그인과 등록이 있으며 관리자 모듈에는 해당 메뉴의 프로필과 로그 아웃이 있습니다. 관리자 및 사용자 모듈에 대해 다른 메뉴를 갖고 싶습니다. 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 :

module.config.php 사용자 모듈

<?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에 대한 관리 모듈 용 .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

관련 문제