सब फॉर्म से मूल्य कैसे प्राप्त करें


9

मैं अपने टेम्प्लेट में एक साधारण स्लाइड शो एम्बेड करना चाहता हूं, और मैं छवि को बदलने के लिए आसान बनाने के लिए सबफॉर्म का उपयोग करना चाहता हूं।

यह वह कोड है जो मैं चाइल्ड xml फ़ाइल को कॉल करने के लिए उपयोग करता हूं

<field name="slideshow_items" type="subform" formsource="templates/jomlamaster/admin/subform/slideshow.xml" min="1" max="4" multiple="true" layout="joomla.form.field.subform.repeatable-table" groupByFieldset="true" label="Subform Field" description="Subform Field Description" />

और यह स्लाइड शो की सामग्री है। xml:

<?xml version="1.0" encoding="UTF-8"?>
<form>
<fieldset name="fieldset" label="Slideshow">
<field name="slideshow_img" type="media" directory="" label="Slideshow item" description="Choose an image slideshow"/>
<field name="slideshow_title" type="text" class="inputbox" label="Slideshow text" size="40" />
</fieldset>
</form>

यह वह है जो मुझे तब मिलता है जब Print_r ($ slideshow_items);

stdClass Object
(
    [slideshow_items0] =&gt; stdClass Object
        (
            [slideshow_img] =&gt; images/slideshow/img0.jpg
            [slideshow_text] =&gt; Title 1
        )

    [slideshow_items1] =&gt; stdClass Object
        (
            [slideshow_img] =&gt; images/slideshow/img1.jpg
            [slideshow_text] =&gt; Title 2
        )

    [slideshow_items2] =&gt; stdClass Object
        (
            [slideshow_img] =&gt; images/slideshow/img2.jpg
            [slideshow_text] =&gt; Title 3
        )

    [slideshow_items3] =&gt; stdClass Object
        (
            [slideshow_img] =&gt; images/slideshow/img3.jpg
            [slideshow_text] =&gt; Title 4
        )

)

मैं ऊपर दिए गए मूल्यों को कैसे पार कर सकता हूं ताकि मैं स्लाइड शो के लिए उनका उपयोग कर सकूं?

धन्यवाद!

जवाबों:


7

यह मेरा समाधान है। अगर कोई बेहतर उपाय है तो कृपया मुझे बताएं

<?php foreach ($slideshow_items as $item) : ?>
  <div class="slideshow">
    <img src="<?php echo $item->slideshow_img; ?>" />
    <p class="slideshow_text">
      <?php echo $item->slideshow_text; ?>
    </p>
  </div>
<?php endforeach; ?>

1
यह सही समाधान है;) केवल एक चीज, मैं जांच करूंगा कि क्या संपत्ति मौजूद है, कुछ इस तरह है:echo empty($item->slideshow_img) ? '' : $item->slideshow_img;
फेडिक

3

उप प्रपत्र फ़ील्ड्स डेटा को JSON फॉर्मेट के रूप में सहेजते हैं इसलिए पहले डेटा प्राप्त करने के लिए इसे "json_decode ()" करने की आवश्यकता होती है, फिर डेटा प्राप्त करने के लिए फ़ॉरच लुक चलाएँ।

<?php $slideshow_items= json_decode($this->item->slideshow_items); ?>

<?php foreach ($slideshow_items as $item) : ?>
<div class="slideshow">
<img src="<?php echo $item->slideshow_img; ?>" />
<p class="slideshow_text">
  <?php echo $item->slideshow_text; ?>
</p>
</div>
<?php endforeach; ?>

3

जब आपको केवल एक फ़ील्ड नाम का मान प्राप्त करने की आवश्यकता होती है:

use Joomla\Utilities\ArrayHelper;

$items = ArrayHelper::getColumn((array) $params->get('subformName'), 'fieldName');

आप कैसे जोड़ते हैं या कॉल करते हैं Joomla\Utilities\ArrayHelper;?
इयोन

1

यदि आप बूटस्ट्रैप हिंडोला का उपयोग कर रहे हैं। यह मेरे लिए काम करता है।

<div id="gallery-1" class="carousel slide" data-ride="carousel">
    <div class="carousel-inner" role="listbox">
        <?php foreach ($slideshow_items as $item => $value) :?>
            <div class="item<?php echo ($item=='slideshow_items0') ? ' active': ''; ?>">
                <img src="<?php echo $value->slideshow_img;?>">
            </div>
            <div class="carousel-caption>">
                <p><?php echo $value->slideshow_text;?></p>
            </div>
        <?php endforeach; ?>
    </div>
</div>

यदि कोई सुधार करना चाहता है या सर्वोत्तम प्रथाओं को प्रदान करना चाहता है तो उसका स्वागत है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.