2010-08-19 19 views
11

वहाँ दृश्य विशेषता "passedArgs" का उपयोग करने के लिए एक उचित तरीका है (या किसी भी इसी तरह की)CakePHP से से देखने गुण/चर तक पहुँचने के लिए एक सहायक के भीतर एक सहायक

/* view */ 
$this->passedArgs 

भीतर?

मुझे सहायक के _construct() को अनुकूलित करने या app_helper को अनुकूलित करने में खुशी होगी ... लेकिन मैं प्रत्येक दृश्य या उपयोग पर सहायक में $this->passedArgs पास नहीं करना चाहता हूं।

उत्तर

26

केक 2.x और 3.x

आप _View वस्तु में अपने चर देख सकते हैं:

$this->_View->viewVars['foo']; 

केक 1.x

हैं आप वर्तमान दृश्य ऑब्जेक्ट को सहायक के भीतर से पकड़ते हैं, जिसे आप अपने पासएआरएआरएस तक पहुंचने में सक्षम होना चाहिए।

class SomeHelper extends AppHelper { 
    function __construct($settings = array()){ 
    $this->passedArgs = ClassRegistry::getObject('view')->passedArgs; 
    } 
} 

केक 1.2.x

आप सहायक भीतर से वर्तमान दृश्य वस्तु हड़पने यदि आप अपने viewVars को पाने के लिए सक्षम होना चाहिए।

class SomeHelper extends AppHelper { 
    function __construct($settings = array()){ 
    $this->viewVars = ClassRegistry::getObject('view')->viewVars; 
    } 
} 

मैं नियंत्रक से सेट दृश्य चर प्राप्त करने के लिए आवश्यक का आनंद लें, निक

+5

मेरे लिए, तो यह था: '$ this-> viewVars = ClassRegistry :: GetObject ('दृश्य') -> व्यूअर्स; ' यह तब एक सरणी है, जिसमें से चाबियाँ वेरिएबल्स का नाम है जो रेंडर के दौरान निकाले गए और उपयोग में उपयोग की जाती हैं। – BeesonBison

+11

केकपीएचपी 2.x में, आप एल्मिकगुवा के लिए '$ यह -> _ व्यू-> व्यूवार्स [' var '] ' – BeesonBison

+0

+1 का उपयोग करके एक हेल्पर विधि से दृश्यवर्स तक पहुंच सकते हैं, जो काम करता है जबकि क्लास रजिस्ट्री मेरे लिए नहीं है। (केक 2.3 स्थिर) –

1

क्या आपने ऐप कंट्रोलर से दृश्य का मूल्य निर्धारित करने का प्रयास किया है?

class AppController extends Controller { 
function beforeFilter() { 
    // other stuff 
    $this->set('passed_args', $this->params['pass']); 
} 
} 
संबंधित मुद्दे