2012-10-23 4 views

risposta

76

Utilizzare $this->params['controller'] per ottenere il controller corrente.

È possibile fare un debug($this->params) per vedere altre variabili disponibili.

+0

Grazie per il suggerimento su '$ questo -params'! – Oberst

4

Per ottenere il controllo di corrente, Prova questo: $this->params['controller']

Per ottenere l'azione in corso, Prova questo: $this->params['action'].

2

per ottenere la corrente,

  • regolatore: $this->params['controller']
  • azione: $this->params['action']
  • argomenti: $this->params['pass']
9

$this->name anche di indicare il nome del controller. La loro differenza con $this->params['controller'] si è prima lettera maiuscola

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

Risultati in:

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

'Users' 

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

'users' 
11

È possibile ottenere regolatore in questo modo:

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

Anche se $this->params è più breve, $this->request->params è più completamento automatico amichevole. È possibile controllare le opzioni di completamento automatico da questa domanda: PHPStorm autocomplete for CakePHP custom helpers in view files

Altri dati su richiesta possono essere presi in questo modo:

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:
Come di CakePHP 3 viene rimossa $this->params di scelta rapida. Quindi è necessario l'utente $this->request->params['controller'] per CakePHP 3.
http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html#id2
Si noti inoltre che il primo carattere del controller è maiuscolo. Era in lettere minuscole in Cakephp 2.

+0

Invece di eco "

#code_here#
"; potresti voler usare "debug()" –

0

Tutte le altre soluzioni hanno il nome del controller ... Ho bisogno del controller stesso, quindi ho eseguito la seguente funzione in un AdminHelper.php chiamato da $this->Admin->_getController('MyControllerName') nella vista.file di 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; 
} 

Nota: non dimenticate di dichiararla nel controllore che userete per esempio:

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

Sto usando cakephp codice 3,2

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

"Missing Helper"

seguito funziona correttamente in CakePHP 3.2

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

grazie ... ha funzionato bene – mostafaznv