2012-10-23 6 views
34

देखें में, मैंदेखें (केकेपीएचपी), वर्तमान नियंत्रक प्राप्त करने का सही तरीका?

$this->action 

का उपयोग करके कार्रवाई प्राप्त कर सकते हैं लेकिन, मुझे द्वारा

$this->controller 

दृश्य में वर्तमान नियंत्रक प्राप्त करने के लिए उचित तरीका क्या है नियंत्रक नाम नहीं मिल सकता है?

उत्तर

76

वर्तमान नियंत्रक प्राप्त करने के लिए $this->params['controller'] का उपयोग करें।

आप अन्य उपलब्ध चर देखने के लिए debug($this->params) कर सकते हैं।

+0

धन्यवाद ठीक से काम कर रहा है -params'! – Oberst

4

वर्तमान नियंत्रक पाने के लिए, इस प्रयास करें: $this->params['controller']

वर्तमान कार्रवाई पाने के लिए, इस प्रयास करें: $this->params['action']

2

वर्तमान पाने के लिए,

  • नियंत्रक: $this->params['controller']
  • कार्रवाई: $this->params['action']
  • तर्क: $this->params['pass']
9

$this->name भी आप नियंत्रक का नाम देते हैं।

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

'Users' 

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

'users' 
11

आप इस तरह नियंत्रक प्राप्त कर सकते हैं:

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

हालांकि $this->params कम है, $this->request->params अधिक स्वत: पूर्ण है $this->params['controller'] के साथ उनके अंतर यह पहले अक्षर में

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

परिणाम पूंजीकृत है है अनुकूल। आपने इस प्रश्न की स्वत: पूर्ण विकल्पों की जांच कर सकते हैं: PHPStorm autocomplete for CakePHP custom helpers in view files

अनुरोध के बारे में अन्य डेटा इस तरह लिया जा सकता है:

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>"; 

संपादित करें:
CakePHP 3 के रूप में $this->params शॉर्टकट निकाल दिया जाता है। तो आपको केकेपीएचपी 3 के लिए उपयोगकर्ता $this->request->params['controller'] चाहिए।
http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html#id2
यह भी ध्यान दें कि नियंत्रक का पहला अक्षर अपरकेस है। यह CakePHP 2.

+0

गूंजने के बजाय "

#code_here#
"; आप "डीबग()" –

0

में लोअरकेस गया था सभी अन्य समाधान नियंत्रक नाम पाने के लिए कर रहे हैं ... मैं नियंत्रक खुद की जरूरत है, तो मैं एक AdminHelper.php दृश्य में $this->Admin->_getController('MyControllerName') से बुलाया में निम्नलिखित समारोह था।सीटीपी फ़ाइल

/****************************************************************** 
* 
******************************************************************/ 
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; 
} 

नोट: मत भूलना नियंत्रक आप उदाहरण के लिए इस्तेमाल करेंगे में यह घोषणा करने के लिए:

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

मैं उपयोग कर रहा हूँ CakePHP 3,2

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

"हेल्पर मिसिंग यू"

के बाद कोड के बारे में `$ इस संकेत के लिए में CakePHP 3,2

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

धन्यवाद का उपयोग करना चाहेंगे ... ठीक काम किया – mostafaznv