2014-03-24 4 views
0

AJAX를 통해 컨트롤러의 기능을 호출 할 수 있도록 URL 라우팅을 작동 시키려고합니다. AJAX 호출은 "ajax/{컨트롤러의 함수 이름}/{함수에 전달할 ID}"형식으로 이루어집니다.URL 라우팅이 작동하지 않습니다.

나는 내 routes.yml에 다음을 추가했습니다 :

Director: 
    rules: 
    'ajax': 'TakeActionPage_Controller' 

을 내 TakeActionPage_Controller, 나는이 :이 작동하지 않습니다

private static $url_handlers = array(
    'electoratesfrompostcode/$ID' => 'electoratesfrompostcode', 
); 

public function electoratesfrompostcode(SS_HTTPRequest $request) 
{ 
    $id = (int)$request->param('ID'); 

    return $this->getElectoratesFromPostcode($id); 
} 

. 나는 TakeActionPage의 URL에 ?debug_request=1를 추가 할 때 내가 얻을 :

Debug (line 250 of RequestHandler.php): Testing 'electoratesfrompostcode/$ID' with '' on TakeActionPage_Controller 
Debug (line 250 of RequestHandler.php): Testing '$Action//$ID/$OtherID' with '' on TakeActionPage_Controller 
Debug (line 258 of RequestHandler.php): Rule '$Action//$ID/$OtherID' matched to action 'handleAction' on TakeActionPage_Controller. Latest request params: array ('Action' => NULL, 'ID' => NULL, 'OtherID' => NULL,) 
Debug (line 184 of RequestHandler.php): Action not set; using default action method name 'index' 

내가 그 디버그 메시지의 만들기 위해 무엇을 정말 모르겠어요. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까? $allowed_actions 배열

public static $allowed_actions = array('electoratesfrompostcode');

를 추가

+0

debug_request의 실제 URL은 무엇입니까? 또한 페이지 컨트롤러' '$ Action // $ ID/$ OtherID''에이 규칙이 있다고 말했기 때문에 왼쪽 위에있는 모든 코드를 붙여 넣었습니까?하지만 코드에는 없습니다. – colymba

답변

0

내가 질문에 게시 코드가 실제로 작동하는지 밝혀졌습니다. 나는 이전에 작동하지 않는 다른 코드를 가지고 있었고 ?debug_request=1을 사용할 때 동일한 디버그 정보를 반환했습니다. 그런 다음 질문에 게시 된 코드를 변경하고 여전히 동일한 디버그 정보를 얻었으므로 여전히 작동하지 않는다고 가정했으나 실제로있었습니다.

작업 코드와 작동하지 않는 코드에 대해 정확히 동일한 메시지가 표시되면 디버그 정보를 어떻게 작성해야할지 모르겠습니다.

관련 문제