2012-09-23 25 views
6

जब मैं Zend Framework 2 के कंकाल अनुप्रयोग का अध्ययन करता हूं, तो मैं UserName को लॉग इन करने के लिए पृष्ठ के ऊपरी-दाएं भाग पर एक लेबल जोड़ना चाहता हूं। लेकिन, मैं उलझन में हूं नेविगेशन बार का कोड जिसे layout.pthml में परिभाषित किया गया था, नियंत्रक इसे संशोधित करने के लिए layout.phtml के साथ कैसे संवाद कर सकता है?ज़ेंड फ्रेमवर्क 2: नियंत्रकों में लेआउट.pthml के विवरण संशोधित करें

अग्रिम धन्यवाद!

इसके अलावा, मैं पृष्ठ के ऊपरी-दाएं लॉगिन पृष्ठ चाहता हूं जब उपयोगकर्ता सहायक का उपयोग करके लॉग इन नहीं करता है। लेकिन मुझे नहीं पता कि सहायक का उपयोग करके कोई फ़ॉर्म कैसे जोड़ना है, मुझे क्या करना चाहिए?

<?php echo $this->username; ?> 

आप हैं:

$this->layout()->username = “some value”; 

फिर layout.phtml में तुम क्या करने में सक्षम होना चाहिए:

+0

उपयोगकर्ता नाम सहेजने के लिए सत्र चर के लिए क्यों नहीं जाते? –

+0

मैं उपयोगकर्ता नाम – zc1415926

+0

बेशक "शो" करना चाहता हूं, उपयोगकर्ता नाम को नियंत्रक में सत्र में दबाएं, फिर लेआउट में उस मान का उपयोग करें। –

उत्तर

7
एक नियंत्रक आप नियंत्रक प्लगइन "लेआउट" कहा जाता है का उपयोग कर सकते एक चर सेट करने के लिए से

Zend\Mvc\Controller\Plugin\Layout पर एक नज़र डालें, आप देखेंगे कि __invoke विधि बिना पैरामीटर वाले ViewModel का एक उदाहरण लौटाएगी, इसलिए यह क्यों काम करता है।

1

आप इसे मॉड्यूल चौड़ा, अपने Module.php

public function onBootstrap(MvcEvent $e) 
{ 
    .... 
    $e->getViewModel()->setVariable('username', 'some_value'); 
} 

पर और अपने layout.phtml पर

echo $layout->username; 
0

module.php में यू इस

कर सकते हैं निर्धारित करना चाहते हैं
public function onBootstrap(MvcEvent $e) 
{ 
    .... 
    $e->getViewModel()->setVariable('username', $username); 
} 

और अपने लेआउट में आप

0 कर सकते हैं

यह भी जांचें कि आपने MvcEvent क्लास का उपयोग किया है या नहीं।