2012-10-23 30 views

Trả lời

76

Sử dụng $this->params['controller'] để lấy bộ điều khiển hiện tại.

Bạn có thể thực hiện debug($this->params) để xem các biến có sẵn khác.

+0

Cảm ơn đã gợi ý về '$ này -params'! – Oberst

4

Để có được bộ điều chỉnh dòng, Hãy thử điều này: $this->params['controller']

Để có được hành động hiện tại, Hãy thử điều này: $this->params['action'].

2

Để có được hiện tại,

  • điều khiển: $this->params['controller']
  • hành động: $this->params['action']
  • đối số: $this->params['pass']
9

$this->name cũng cung cấp cho bạn tên điều khiển của. sự khác biệt của họ với $this->params['controller'] được đó là chữ cái đầu tiên vốn

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

Kết quả trong:

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

'Users' 

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

'users' 
11

Bạn có thể nhận được điều khiển như thế này:

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

Mặc dù $this->params là ngắn hơn, $this->request->params là autocomplete hơn thân thiện. Bạn có thể kiểm tra các tùy chọn autocomplete từ câu hỏi này: PHPStorm autocomplete for CakePHP custom helpers in view files

dữ liệu khác về yêu cầu có thể được thực hiện như thế này:

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:
Tính đến CakePHP 3 $this->params shortcut được lấy ra. Vì vậy, bạn nên sử dụng $this->request->params['controller'] cho CakePHP 3.
http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html#id2
Cũng lưu ý rằng ký tự đầu tiên của bộ điều khiển là chữ hoa. Đó là chữ thường trong Cakephp 2.

+0

Thay vì echo "

#code_here#
"; bạn có thể muốn sử dụng "debug()" –

0

Tất cả các giải pháp khác là lấy tên bộ điều khiển ... Tôi cần bộ điều khiển, vì vậy tôi đã thực hiện chức năng sau trong một AdminHelper.php được gọi là $this->Admin->_getController('MyControllerName') vào khung nhìn.tập tin 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; 
} 

Lưu ý: đừng quên khai báo nó vào bộ điều khiển bạn sẽ sử dụng ví dụ:

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

Tôi đang sử dụng CakePHP đang 3,2

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

"Thiếu Helper"

Sau đây là hoạt động bình thường trong CakePHP 3,2

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

cảm ơn ... đã làm việc tốt – mostafaznv

Các vấn đề liên quan