2011-10-05 1 views
1

뷰에서 $ this-> url()을 호출하면 매개 변수가있는 URL이 표시됩니다. 예 :/테스트 /보기/VAR1/값 1zend url 도우미 매개 변수를 재설정하고 urlOptions를 전달하지 않고 현재 URL을 가져올 수 있습니까?

매개 변수 (var1에/값 1)없이와 urlOptions 거치지 않고 currect URL/위치 얻을 수있는 방법이 있나요 :이 그것을 사용하는 경우 예를 들어

는, 작동 :

$ this-> url (array ("controller"=> "test", "action"=> "view"), null, true); // 반환/테스트 /보기

하지만 매개 변수

$ this-> URL (배열()는 null, true)를 통과하지 않도록하고 싶습니다;

어떤 방법이 있습니까?

답변

3

이것은보기 도우미에 대한 작업처럼 들립니다. 이 같은?

class Zend_View_Helper_Shorturl { 

    public function shorturl() { 
     $request = Zend_Controller_Front::getInstance()->getRequest(); 
     $module = $request->getModuleName(); 
     $controller = $request->getControllerName(); 
     $action = $request->getActionName(); 
     return $this->view->url(array('module'=>$module, 'controller'=>$controller,'action'=>$action), null, true); 
     //return "/$controller/$action"; //Left this in incase it works better for you. 

    } 
} 

그런 다음보기에 $this->shorturl();이라고 적으십시오. 사실 은, 난 그냥이 시도하고 그것은 작동 :

그냥이 scripts/helpers/Shorturl.php

편집에 갈 것이라고 명확합니다. 나는 이것을 사용하는 해결책이라고 말하고 싶다.

class Zend_View_Helper_Shorturl { 

    public function shorturl() { 
     return $this->view->url(array('module'=>$module, 'controller'=>$controller,'action'=>$action), null, true); 
    } 
} 
+1

사용하는 경우에만 호출되기 때문에 위의 방법보다 훨씬 나은 해결책이라고 할 수 있습니다. 그러나 마지막 줄은 기본 라우터가 그렇지 않기 때문에'return $ this-> view-> url (array ('controller'=> $ controller, 'action'=> $ action), null, true);'이어야합니다. '/ controller/action' 형식의 URL을 사용하십시오. – MrTrick

+0

좋은 점, 귀하의 의견을 반영하고 모듈을 설명하기 위해 편집되었습니다. – vascowhite

3

라우터 (URL 뷰 도우미라고도 함)가 링크를 생성하는 데 사용하는 Zend_Controller_Request_Http 객체는 실제로 모듈/컨트롤러/액션 매개 변수와 액션에서 사용할 수있는 다른 매개 변수를 구분하지 않습니다.

어느 쪽이든 당신은 위에 인용 한 최초의 양식을 사용하거나, 모든 행동/컨트롤러 작동하는 솔루션을 필요로하는 경우, 같은 것을 만들 : 어떤 관점에서

class MyApplication_Controller_Action_Base extends Zend_Controller_Action { 
    public function preDispatch() { 
     //Generate a URL to the module/controller/action 
     //(without any other parameters) 
     $this->view->bareUrl = $this->view->url(
      array_intersect_key(
       $this->getRequest()->getParams(), 
       array_flip(array('module','view','controller') 
      ), 
      null, 
      true 
     ); 
    } 
} 

을, 당신은 사용할 수 있습니다 <?=$this->bareUrl?>

1

그냥 것이다 그것은 예를 들어, 브라우저 URL에 나타납니다처럼이 경우 base을/컨트롤러를 얻기 위해 그것을 www.your-domain.ro/project/members $ this-> URL을()를 사용 return project/members

관련 문제