2011-12-15 2 views
0

zendframework 경로 및 매개 변수에 문제가 있습니다.경로 및 URL 매개 변수 - ZendFramework

나는 내보기 페이지에서 언어 선택이 : 그것은 경로없이 잘 작동

<div class="language-chooser"> 
    <? 
    $params = Zend_Controller_Front::getInstance()->getRequest()->getParams(); 
    unset($params['module']); 
    unset($params['controller']); 
    unset($params['action']); 
    ?> 
    <a href="<?= $this->url(array_merge($params, array('lang' => 'pt'))); ?>"><img src="<?= $this->baseUrl('/images/flags/br.png'); ?>" alt="" /></a> 
    <a href="<?= $this->url(array_merge($params, array('lang' => 'en'))); ?>"><img src="<?= $this->baseUrl('/images/flags/us.png'); ?>" alt="" /> </a> 
</div> 

. 로컬 호스트/응용 프로그램/연락처 액세스, 내가 링크를 얻을 제대로 예 : 로컬 호스트/응용 프로그램/연락처/색인/LANG/

엔하지만 경로를 추가하는 경우

protected function _initRotas() { 
    $router = Zend_Controller_Front::getInstance()->getRouter(); 
    $route = new Zend_Controller_Router_Route(
        '/contact', 
        array(
         'module' => 'default', 
         'controller' => 'contact', 
         'action' => 'index' 
        ) 
    ); 
    $router->addRoute('contact', $route); 
} 

는 나는 랭없이 링크를 얻을 param. 예 : localhost/app/contact/

어떻게이 문제를 해결할 수 있습니까?

감사

+0

이 HTTP를 읽기 : // stackoverflow.com/questions/8345018/zend-reverse-matching-of-ro utes-returns-current-url/ – emaillenin

답변

2

는 첫 번째 예는 :module/:controller/:action/* 공지 사항 경로의 끝에서 *과 같은 기본 경로에 기반; URL에 추가 키/값 쌍이 포함될 수 있음을 정의합니다.

는 URL이 /contact/pt처럼 보이게됩니다

$route = new Zend_Controller_Router_Route(
    '/contact/:lang', 
    array(
     'module' => 'default', 
     'controller' => 'contact', 
     'action' => 'index' 
    ) 
); 

이 사용할 수 중, 상대 경로 일을 확인하십시오. 또는 당신은 사용할 수 있습니다

$route = new Zend_Controller_Router_Route(
    '/contact/*', 
    array(
     'module' => 'default', 
     'controller' => 'contact', 
     'action' => 'index' 
    ) 
); 

/contact/index/lang/pt

+0

"경로 끝에 '*'가 표시됩니다. URL에 추가 키/값 쌍이 포함될 수 있음을 정의합니다. " => 이것이 내가 미친 짓이었습니다. 나는 별이 필요했습니다 ... THX !!! – LittleBigDev

0

가 발생합니다 어느 또한이 코드를 사용할 수 있습니다

$Router = Zend_Controller_Front::getInstance()->getRouter(); 
$Router->addRoute('move', new Zend_Controller_Router_Route(
    '/contact/:lang', 
    array(
     'module' => 'default', 
     'controller' => 'contact', 
     'action' => 'index' 
    ), 
    array(
     'lang' => '[a-z]+' 
    ) 
)); 

Zend_Controller_Front

Zend_Controller_Router_Route