2012-05-03 14 views
27

मुझे यहां कोई समस्या है और इसे हल नहीं कर सकते: -/घटक पैरामीटर कैसे प्राप्त करें?

मैं बैकएंड के साथ एक जूमला घटक विकसित कर रहा हूं। बैकएंड में मैंने पैरामीटर सेट किया है, dashboardId, लेकिन मैं उन्हें दृश्य में नहीं देख सकता। मुझे हमेशा data:protected मिलता है (जब मैं params डंप करता हूं)। ऐसा लगता है कि मुझे ऑब्जेक्ट तक पहुंचने की अनुमति नहीं है। view.html.php मैं इस तरह पैरामीटर तक पहुँचने का प्रयास में

<?xml version="1.0" encoding="utf-8"?> 
<metadata> 
    <layout title="Dashboard"> 
     <message> 
      <![CDATA[dashboard LAYOUT DESCRIPTION]]> 
     </message> 
    </layout> 
    <fields name="params"> 
     <fieldset name="params"> 
      <field 
       name="dashboardId" 
       type="text" 
       label="Dashboard ID" 
       description="com_dashboard_desc" 
       default="1" 
      > 
      </field> 
     </fieldset> 
    </fields> 
</metadata> 

अब,:

यहाँ default.xml है जब मैं var_dump($dashboardId); मैं NULL मिलता है लेकिन जब मैं $app डंप

$app = &JFactory::getApplication(); 
$params = JComponentHelper::getParams('com_dashboard'); 
$dashboardId = $params->get('dashboardId'); 
var_dump($dashboardId); 

, मैं dashboardID

देख सकता हूं हर मदद की सराहना की जाएगी! धन्यवाद

+0

संदेश के बारे में बताता है कि मैं $ params डंप करता हूं: ऑब्जेक्ट (जेआरजीस्ट्री) # 102 (1) {["डेटा": संरक्षित] => ऑब्जेक्ट (stdClass) # 106 (0) {}} ... और मैं एक्सेस करना चाहता हूं डेटा ऑब्जेक्ट – Nico

उत्तर

54

एक और आसान तरीका है। पहले आयात जूमला घटक हेल्पर:

jimport('joomla.application.component.helper'); 

और फिर किसी भी विशेषता आप इस तरह चाहते हैं पुनः प्राप्त:

$dashboardID = JComponentHelper::getParams('com_dashboard')->get('dashboardID'); 

नमस्ते।

+3

यह जे! 2.5 और> (अब तक) – Cleanshooter

+0

में ऐसा करने का सबसे अच्छा तरीका है, यह सही तरीका है, क्योंकि आप देखेंगे कि जूमला में अधिकांश गुण सुरक्षित हैं [var_dump ($ params) आपको यह बताएगा ] और उन्हें एक्सेस करने का एकमात्र तरीका फ़ंक्शन कॉल के माध्यम से होता है। –

-1

मैं एक ही समस्या थी और समाधान यह था:

$input = JFactory::getApplication()->input; 
$parametername = $input->getInt('parametername'); 
echo $parametername; 

यह देखा गया Tmpl फ़ोल्डर में default.xml में एक पैरामीटर का नाम है। यहाँ, एक्सएमएल

<?xml version="1.0" encoding="utf-8"?> 
<metadata> 
    <layout title="Offers"> 
     <message>This is a component in order to display offers</message> 
    </layout> 
    <state> 
     <name>name</name> 
      <description>description</description> 

     <url addpath="/administrator/components/com_component/elements"> 
      <param name="category_id" section="com_component" type="categoriesmenu" value_field="category_name" label="COM_COMPONENT_CATEGORY_FIELD_SELECT_TITLE" description="COM_COMPONENT_CATEGORY_FIELD_SELECT_TITLE_DESC" /> 
     </url> 
    </state> 

    <fields name="request" > 
     <fieldset name="request" addfieldpath="/administrator/components/com_component/models/fields"> 
      <field name="parametername" type="category" 
       label="category" 
       required="true" 
       description="Perigrafh" 
      /> 
     </fieldset> 
    </fields> 


</metadata> 
11
$app = JFactory::getApplication('site'); 
$componentParams = $app->getParams('com_example'); 
$param = $componentParams->get('paramName', defaultValue); 
+0

शायद यह बैकएंड में काम नहीं कर रहा है क्योंकि 'जेएफटीसी :: getAplication (' site ')' अभी भी एक प्रशासन अनुप्रयोग ऑब्जेक्ट लौटाएगा जिसमें 'getParams' विधि नहीं है। –

3

LoboX द्वारा प्रदान की जवाब देने के लिए इसी तरह की है मैं घटक सहायक का उपयोग कर घटक पैरामीटर प्राप्त करने की सलाह देते हैं:

jimport('joomla.application.component.helper'); // Import component helper library 
$params = JComponentHelper::getParams(JRequest::getVar('option')); // Get parameter helper (corrected 'JRquest' spelling) 
$params->get('parameter_name'); // Get an individual parameter 

JRequest::getVar('option') रिटर्न के साथ अपने घटक का नाम com_ उपसर्ग। इसके अलावा, ऐसा लगता है कि आप अपनी विन्यास फाइल में 1.5/1.6 वाक्यविन्यास का थोड़ा सा मिश्रण करने की कोशिश कर रहे हैं। यदि आपने इसे अभी तक नहीं देखा है, तो दस्तावेज़ के 2.5 version के माध्यम से पढ़ने का प्रयास करें। मुझे आशा है कि वह मदद करेंगे!

1

मुझे एक ही समस्या थी। मुझे केवल डेटा मिला: संरक्षित परिणाम जब तक कि मैं अपने घटक की कॉन्फ़िगरेशन पर गया और इसे सहेजा नहीं। हालांकि टेक्स्टफील्ड में मुद्रित डिफ़ॉल्ट मान थे, लेकिन 'सेव' पर क्लिक करने से पहले जूमला उन्हें पढ़ने में सक्षम नहीं था।

2

यह जेटी के लिए अनुकरण है। ब्लम जवाब, लेकिन जूमला 3.x जेआरक्व्वेस्ट में गिरा दिया गया है। यह प्रतिकृति के पैरा प्राप्त करने का एक और तरीका है।

$app = JFactory::getApplication(); 
    $input = $app ->input; 
    $componentName = $input ->get('option'); 
    $params = JComponentHelper::getParams($componentName); 
    print_r($params); 
+0

परम पाने के लिए आपको '$ पैराम्स'>> ('param name') प्राप्त करना होगा; ' – aspirisen

1

सभी जूमला संस्करण 1.5/2.5/3 में पैराम ऑब्जेक्ट प्राप्त करने के लिए सहायक फ़ंक्शन।एक्स

class myCompoHelper{ 

    public static function getParams($option) 
    { 

     if (version_compare(JVERSION, '1.5', 'g')) 
     { 
      $application = JFactory::getApplication(); 
      if ($application->isSite()) 
      { 
       $params = $application->getParams($option); 
      } 
      else 
      { 
       jimport('joomla.application.component.helper'); 
       $params = JComponentHelper::getParams($option); 
      } 
     } 
     else 
     { 
      jimport('joomla.application.component.helper'); 
      $params = JComponentHelper::getParams($option); 
     } 
     return $params; 
    } 

} 

$params=myCompoHelper::getParams('com_mycomponent'); 
echo $params->get('myParamName',null); 
0

संस्करण 3.1 के बाद से जूमला प्रक्रिया में है सब J कक्षाओं का बहिष्कार करना, कोई फर्क प्रभाव, संस्करण 4.0 पर घटकों परम पुनः प्राप्त करने या तो पूरा नाम स्थान समारोह बुला रहा है लगभग सभी J कक्षाएं अब से जिस तरह से सिफारिश की का बहिष्कार करेंगे, :

Joomla\CMS\Component\ComponentHelper::getParams('com_dashboard')->get('dashboardID'); 

या, यदि आप एक मॉडल पर काम कर रहे हैं, आप फ़ाइल आयात और दस्तावेज़ में वर्ग नीचे का उपयोग करने के use कीवर्ड,

use Joomla\CMS\Component\ComponentHelper; 

function myFunction() { 
    $param = ComponentHelper::getParams('com_dashboard'); 
    $dashboardID = $param->get('dashboardID'); 
} 
की तरह कॉल कर सकते हैं
संबंधित मुद्दे