하위 양식에서 가치를 얻는 방법


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

이것은 slideshow.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;
Fedik

3

하위 양식 필드 데이터는 JSON 형식으로 저장되므로 먼저 "json_decode ()"로 데이터를 가져 와서 데이터를 가져 오려면 forlook을 실행해야합니다.

<?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;어떻게합니까?
Eoin

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>

모범 사례를 개선하거나 제공하려는 사람은 언제든지 환영합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.