2013-04-04 2 views
0

at this article 솔루션을 구현했습니다.URL에 언어 매개 변수를 추가하는 CakePHP

"beforeFilter"및 "_setLanguage"은 정상적으로 작동합니다. URL에 language 매개 변수가 있으면 쿠키/세션 변수를 성공적으로 설정할 수 있습니다. 컨트롤러간에 사용하십시오.

그 해결책은 url() 기능을 AppHelper에 추가하는 것을 포함합니다.

class AppHelper extends Helper { 
    function url($url = null, $full = false) { 
     if(!isset($url['language']) && isset($this->params['language'])) { 
      $url['language'] = $this->params['language']; 
     } 
     return parent::url($url, $full); 
    } 
} 

그러나보기 파일에는 HtmlHelper을 사용하지 않고 작성된 URL이 많이 있습니다. 이 같은 :

그래서 AppHelper :: url 솔루션 내 문제를 해결하지 않는 것 같습니다. URL에 언어 접두어를 추가하는 것이 더 좋은 대안은 무엇입니까?

나는이 같은 전역 변수를 정의하는 생각 :

// myfile.ctp 
<a href="<?php echo URLprefix; ?>/mypage/">click me plase<a> 

를하지만 좋은 방법을하지 않는 것 :

// AppController::_beforeFilter() 
if ($this->request->params['language'] != "") 
{ 
    Configure::write('URLprefix', '/'.$this->request->params['language']); 
} else { 
    Configure::write('URLprefix', ''); 
} 

는 다음과 같이보기 파일을 변경합니다. URL에 프리픽스를 추가하는 더 좋은 방법이 있습니까? 아니면 직접 모든 링크에 추가해야합니까?

관련 :
Adding a prefix to every URL in CakePHP
CakePHP 2.x i18n route
CakePHP 2.1 URL Language Parameter

답변

1
당신은 생성 할 때 이것은 당신의 경로를 고려하고 있는지 확인합니다 HtmlHelper::link()HtmlHelper::url()

를 사용하여 응용 프로그램 내의 모든 링크 및 URL을 생성한다

URL (역방향 라우팅)

예를 들어210

, 당신은 다음이, /users/logout에 대한 '친절한'URL 경로 /logout을 정의하기로 결정한 경우 : 나중에 수정하기로 결정하는 경우

<a href='/logout'>Log out</a> 

:

echo $this->Html->link('Log out', array(
    'controller' => 'users', 
    'action' => 'logout' 
)); 

이 링크를 만듭니다 로그 아웃 URL에 대해 'friendly'URL Route()를 입력하면 애플리케이션의 모든 링크가 자동으로 조정됩니다.

Html 헬퍼, 지금 것 출력에 같은 전화 :

<a href='/sign-out'>Log out</a> 

더 읽기 여기에이 주제에 :

Reverse Routing

관련 문제