1

저는 ZF 1을 가지고 있습니다. Bootstrap.php에서 라우팅 및 기타 preDispatch 작업을 많이하고 있습니다.ZendFramework 2 - 어떻게 ZF1에서와 비슷한 Bootstrap.php를 할 수 있습니까?

그러나 ZF2에는 더 이상 Bootstrap.php 개념이 없습니까? 아니면 Zf2에서 어떻게 할 수 있습니까? ZF2의 가장 뛰어난 기능의

<?php 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap { 

    protected function _initPdispatch() { 
    $this->bootstrap('frontController'); 
    require_once APPLICATION_PATH . '/controllers/plugin/LanguageSelector.php'; 
    $plugin = new LanguageSelector(); 
    $front = Zend_Controller_Front::getInstance(); 
    $front->registerPlugin($plugin); 
    return $plugin; 
    } 

    protected function _initRoutes() { 
    $front = Zend_Controller_Front::getInstance(); 
    $router = $front->getRouter(); 
    $dynamic1 = new Zend_Controller_Router_Route(
        '/:variable1', 
        array(
         'controller' => 'router', 
        ), 
//    array('variable1' => '^[a-zA-Z0-9_-]*$') 
        array('variable1' => '^[\w.-]*$') 
    ); 
    $router->addRoute('dynamic1', $dynamic1); 
    } 
+0

Afaik는 더 이상 동적 라우팅을 사용하지 말 것을 강력히 권장합니다 **. – pebbo

답변

1

하나는 실제로 경로는 처음를 미워 무언가이다. 이 모두 귀찮습니다. 이제 모든 모듈의 경로를 설정하기 위해 이 필요합니다.이 필요합니다.

이해의 일부 ZF2 (더 빨리) 모듈을 이해하고 있습니다. 이 문제를 극복 할 수 있다면 더 빨리 적응하기 시작할 것입니다. (적어도 그것은 그것이 나를 위해 있었던 방법이다). 그렇다면 ZF2에서 모듈이란 무엇입니까? 아무것도!

어쨌든 모든 모듈과 응용 프로그램의 모든 구성 파일이 Zend Framework에서 병합되므로 결국 어디에서나 경로를 정의 할 수 있습니다.

즉, ModuleName/config/module.config.php 파일의 일부인 경로를 "부트 스트랩"할 필요가 없습니다. 지금.

는 지금, 나는 ZF2 내에서 정규 표현식 경로에 대한 전문가 모르겠지만, 뭔가 같은 것 : 거기

// MyModule/config/module.config.php 
return array(
    'router' => array(
     'routes' => array(
      'dynamic1' => array(
       'type' => 'regex', 
       'options' => array(
        'route' => '/[:variable1]' 
       ) 
      ) 
     ) 
    ) 
); 

어딘가에 당신이 정규식을 정의합니다. 당신이 해골을 사용하는 경우

use Zend\Mvc\Router\Http\Regex; 

// ... 

$route = Regex::factory(array(
    'regex' => '/blog/(?<id>[a-zA-Z0-9_-]+)(\.(?<format>(json|html|xml|rss)))?', 
    'defaults' => array(
     'controller' => 'Application\Controller\BlogController', 
     'action'  => 'view', 
     'format'  => 'html', 
    ), 
    'spec' => '/blog/%id%.%format%', 
)); 

$router->addRoute($route); 

당신은 응용 프로그램 모듈 내에서 onBootstrap()에 서비스로이를 추가하거나 넣어 할 수 있어야한다 : 또한, 나는 당신이 수동으로 정규식 경로를 정의 할 수 자신의 문서에서 본 신청.

예 : 예를 다시 한 번 나는이 문제에 대한 전문가가 아닙니다. Here is some more information.

희망이 있습니다.

+1

감사합니다. 실제로 ZF2는 이제 CakePHP와 비슷합니다. 예를 들면 다음과 같습니다 : Router :: connect ('/ terms-condition', array ('controller'=> 'cms_pages', 'action'=> 'index', 2));'(아직도 나는 ZF1의 오래된 방법을 좋아했다.) – YumYumYum

+1

오, 좋았어, 네가 케익에서 그걸 할 수 있는지 몰랐어. 그건 그렇고 아주 환영합니다! 내가 좋아하는 ZF1에 대한 것들도 있지만, ZF2에 익숙해 질수록 더 좋아집니다. –