2013-07-17 8 views
0

CakePHP에서 컨트롤러 매개 변수 메서드에 간단한 매개 변수를 전달하려고합니다. 그러나 매개 변수가 URL에 표시되어야하는 것처럼 보입니다. 매개 변수를 URL에 표시하지 않고 전달할 수 있습니까?CakePHP 컨트롤러에 매개 변수를 전달하는 방법은 무엇입니까?

내 라우팅 :

Router::connect(
    '/', 
    array(
     'controller' => 'Pages', 
     'action' => 'display' 
    ), 
    array(
     'pass' => array(
      'pageName' =>'home' 
     ) 
    ) 
); 

그리고 내 컨트롤러 방법 :

public function display($p_sPageName=null) { 
+0

cakefp 버전을 잊어 버렸습니다. – mark

+0

죄송합니다, CakePHP 버전 2.3.7 – Hans

답변

3
Router::connect(
    '/', 
    array(
     'controller' => 'Pages', 
     'action' => 'display', 
     'home', 
    ), 
); 

이것은 기본 구운 응용 프로그램의 경로 이미 존재해야합니다. 이 책은 또한 매우 좋은 section explaining the routing 있습니다.

follow the CakePHP coding standard 또한 변수 이름 $ p_sPageName이 (가) 잘못되었습니다. 아무도 $ p_s가 무엇을 의미하는지 결코 알지 못합니다. 깨끗하고 읽기 쉬운 코드 작성에 대해서는 This is a very good read입니다.

/** 
* Displays a static page 
* 
* @param string $pageName 
* @return void 
*/ 
    public function display($pageName = null) { /*...*/ } 

doc 블록은 변수 이름이 아닌 문자열임을 "@param string $ pageName"으로 알려야합니다. 문서가 없으면 명명 규칙을 모르는 모든 사람들이 읽을 수 없게됩니다.

+0

이 표기법 (p_s)이 매개 변수 (p) 문자열에 대해 알게되었지만 그 부분을 살펴 보겠습니다. – Hans

+0

라우팅이 작동합니다. 감사합니다. 왜 그것이 나를 위해 작동하지 않는 이상한. – Hans

+0

doc 블록은 "@param string $ pageName"에 변수 이름이 아닌 문자열임을 알려야합니다. 문서가 없으면 명명 규칙을 모르는 모든 사람들이 읽을 수 없게됩니다. – burzum

관련 문제