2013-04-09 2 views
0

을 삭제하고, 나는 그런 URL의 ID를 얻는 방법을 궁금해 :젠드 프레임 워크 /의 ID를 얻을 실제로 젠드를 사용하고/2

/delete/2 

내가 사용하여 수행 할 수 있습니다 알고

// if URL is /delete/id/2 
$request->getParam('id'); 

하지만 내가 원했던 것은 첫 번째 URL과 같은 URL을 갖는 것입니다. /delete/2 나는 더 논리적으로 들립니다.

아이디어가 있으십니까? 당신의 도움이

+0

ZF는 기존 MVC이므로 특정 방식으로 정보를 보내야 함을 의미합니다. 당신이 사용할 수있는 다른 기술은 라우터 일 것이고, 그러면이 방법으로 당신이 원하는 것을 얻을 수 있습니다. – medina

+0

그래,하지만 불행히도 실제로는 RESTful 유형의 URL이 아닙니다. 다른 프레임 워크는 쉽고 우아하게 작업을 수행합니다. 어쨌든, 나는 각 프레임 워크의 단점과 찬성에 관해 이야기하기 위해 여기에 온 것이 아닙니다. Zend에서 가능한지 알고 싶었습니다. 답변 주셔서 감사합니다. – lkartono

+0

Routes mate를 사용해 보셨습니까? – medina

답변

1

에 대한

덕분에 나는 당신이 경로를 사용하여 이러한 문제를 해결할 수 있어야한다고 생각합니다. 당신은 예를 들어 당신의 config.ini 파일이 추가

/delete/2 

에 대한 경로를 만들 수 있습니다

[production] 
routes.delete.route = "delete/:id" 
routes.delete.defaults.controller = delete 
routes.delete.defaults.action = index 
routes.delete.id.reqs = "\d+" 

가 여기에있는 단어 :이 변수는 콜론으로 시작, 일치하는 URL을 지정합니다. 보시다시피 변수 정규식에 대한 요구 사항을 설정할 수도 있습니다. 귀하의 예에서 id은 하나 이상의 숫자 일 가능성이 높으므로이 변수에 \d+ 요구 사항이 적용됩니다.

이 경로는 delete 컨트롤러의 index 동작을 가리키고 id을 GET-var로 설정합니다. 이 .ini 코드는 특정 요구에 맞게 변경할 수 있습니다.

라우트는 부트 스트랩 내부에 다음 코드를 넣어 추가 할 수 있습니다

$config = new Zend_Config_Ini('/path/to/config.ini', 'production'); 
$router = new Zend_Controller_Router_Rewrite(); 
$router->addConfig($config, 'routes'); 

은 자세한 내용은 문서를 참조하십시오 : 일반 문서에 대한 herehere을 그냥 설명 .INI 접근.

+0

이 경우에는 url의 매개 변수를 전달하는 각 액션마다 고유 한 항목을 추가해야합니다. –

0

이 시도 : 당신의 Bootstrap.php에 다음 함수를 추가

protected function _initRoute(){ 
    $this->bootstrap ('frontcontroller'); 
    $front = $this->getResource('frontcontroller'); 
    $router = $front->getRouter(); 
    $deleteRoute = new Zend_Controller_Router_Route(
    'delete/:id', 
    array(
     'controller' => '{enter-your-controller-name-here}', 
     'action'  => '{enter-your-action-name-here}' 
     ) 
    ); 
    $router->addRoute('delete', $deleteRoute); 
} 

교체하는 것을 잊지 마세요

컨트롤러 이름 {- 네 - 컨트롤러 이름 여기에 입력}와 {입력 - 당신의 액션을 -name-here}에 조치 이름을 입력하십시오.

이 코드를 추가하면 $request->getParam('id');이 정상적으로 작동합니다.