ZendFramework - Как узнать, какой контроллер и какой конкретный метод выполняется? - PullRequest
2 голосов
/ 05 февраля 2012

Когда я выполняю / mycontroller / search, он показывает только «/ mycontroller», но как мне получить «/ mycontroller / search», когда я нахожусь в методе search, как мне получить «/ mycontroller / other», когда я нахожусьв other метод.

class Mycontroller  extends Zend_Controller_Action
{ 
  private $url = null;
  public function otherAction() { 
   $this->url .= "/" . $this->getRequest()->getControllerName();
   echo $this->url;  // output: /mycontroller
   exit;
  }
  public function searchAction() { 
   $this->url .= "/" . $this->getRequest()->getControllerName();
   echo $this->url; // output: /mycontroller
                    // expect: /mycontroller/search
   exit;
  }
}

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

$this->getRequest()->getActionName(); возвращает имя действия.Вы также можете использовать $_SERVER['REQUEST_URI'], чтобы получить то, что вы хотите.

2 голосов
/ 05 февраля 2012

почему вы ожидаете / mycontroller / search от этого:

public function searchAction() { 
   $this->url .= "/" . $this->getRequest()->getControllerName();
   echo $this->url; // output: /mycontroller
                    // expect: /mycontroller/search
   exit;
  }

вы запрашиваете только контроллер.

это будет работать:

 public function searchAction() { 
    $this->url = '/'. $this->getRequest()->getControllerName();
    $this->url .= '/' . $this->getRequest()->getActionName();

    echo $this->url; // output: /mycontroller/search

    echo $this->getRequest()->getRequestUri(); //output: requested URI for comparison

    //here is another way to get the same info
    $this->url = $this->getRequest()->controller . '/' . $this->getRquest()->action;
    echo $this->url;

 exit;
 }
...