2012-10-23 13 views

Odpowiedz

76

Użyj $this->params['controller'], aby uzyskać bieżący kontroler.

Możesz zrobić debug($this->params), aby zobaczyć inne dostępne zmienne.

+0

Dzięki za podpowiedź o '$ this -params'! – Oberst

4

Aby uzyskać aktualny sterownik, spróbuj tego: $this->params['controller']

Aby uzyskać bieżące działania, spróbuj tego: $this->params['action'].

2

Aby uzyskać prąd,

  • kontroler: $this->params['controller']
  • Działanie: $this->params['action']
  • argumenty: $this->params['pass']
9

$this->name również daje nazwę sterownika. Ich różnica z $this->params['controller'] jest jego pierwsza litera

debug($this->name); 
debug($this->params['controller']); 

Skutkuje:

\app\Controller\AppController.php (line 176) 

'Users' 

\app\Controller\AppController.php (line 177) 

'users' 
11

Można dostać kontroler tak:

echo "<pre>controller:".$this->request->params['controller']."</pre>"; 

Chociaż $this->params jest krótszy, $this->request->params jest bardziej autouzupełnianie przyjazny. Można sprawdzić opcje autouzupełniania z tym pytanie: PHPStorm autocomplete for CakePHP custom helpers in view files

Inne dane o zamówienie mogą być podejmowane tak:

echo "<pre>action:".$this->request->params['action']."</pre>"; 

echo "<pre>request:"; print_r($this->request); echo "</pre>"; 

echo "<details><summary>this:</summary><pre>"; 
     print_r($this); echo "</pre></details>"; 

Edit:
Od CakePHP 3 $this->params skrót zostanie usunięty. Więc powinieneś użyć użytkownika $this->request->params['controller'] dla CakePHP 3.
http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html#id2
Należy również pamiętać, że pierwszy znak kontrolera jest pisany wielkimi literami. Miał on małe litery w Cakephp 2.

+0

Zamiast echa "

#code_here#
"; możesz użyć "debug()" –

0

Wszystkie inne rozwiązania mają uzyskać nazwę kontrolera ... Potrzebuję samego kontrolera, więc zrobiłem następującą funkcję w AdminHelper.php wywołanym przez $this->Admin->_getController('MyControllerName') w widoku.Plik CTP

/****************************************************************** 
* 
******************************************************************/ 
function _getController($pControllerName){ 
    if (! isset($this->controllersArray[$pControllerName])){ 
     $importRes = App::import('Controller', $pControllerName);// The same as require('controllers/users_controller.php'); 
     $strToEval = "\$controller = new ".$pControllerName."Controller;"; 
     $evalRes = eval($strToEval); 
     if ($evalRes === false){ 
      throw new AppException("Eval returned an error into ".__FILE__." getController()"); 
     } 
     $controller->constructClasses();// If we want the model associations, components, etc to be loaded 
     $this->controllersArray[$pControllerName] = $controller; 
    } 

    $result = $this->controllersArray[$pControllerName]; 
    return $result; 
} 

Uwaga: Nie zapomnij zgłosić go do sterownika będziesz używać na przykład:

  • ludzie/view.ctp ->$this->Admin->_getController('MyControllerName')
  • PeopleController.ctp ->var $helpers = array('Html', 'Form', 'Admin');
  • AdminHelper.ctp ->function _getController(...
3

Używam CakePHP 3,2

$this->params['controller'] - It is not working, showing error message as bellow.. 

"Missing Helper"

następujący kod działa poprawnie w CakePHP 3.2

$this->request->params['controller'] - Working 
+0

dzięki ... pracował dobrze – mostafaznv

Powiązane problemy