Как получить значение из подформы

Я хочу встроить простое слайд-шоу в свой шаблон, и я хочу использовать подформат, чтобы упростить изменение изображения.

Это код, который я использую для вызова дочернего 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"?>
& Lt; & форма GT;
<fieldset name = "fieldset" label = "Слайд-шоу">
<field name = "slideshow_img" type = "media" directory = "" label = "Описание слайд-шоу" description = "Выбрать слайд-шоу изображений" />
<имя поля = "slideshow_title" type = "text" class = "inputbox" label = "Текст слайд-шоу" size = "40" />
& Lt; /FIELDSET >
& Lt; /форма >

Это то, что я получаю, когда print_r ($ slideshow_items);

Объект stdClass
(
    [slideshow_items0] = & gt; Объект stdClass
        (
            [slideshow_img] = & gt; изображения /слайд-шоу /img0.jpg
            [slideshow_text] = & gt; Название 1
        )

    [slideshow_items1] = & gt; Объект stdClass
        (
            [slideshow_img] = & gt; изображения /слайд-шоу /img1.jpg
            [slideshow_text] = & gt; Название 2
        )

    [slideshow_items2] = & gt; Объект stdClass
        (
            [slideshow_img] = & gt; изображения /слайд-шоу /img2.jpg
            [slideshow_text] = & gt; Название 3
        )

    [slideshow_items3] = & gt; Объект stdClass
        (
            [slideshow_img] = & gt; изображения /слайд-шоу /img3.jpg
            [slideshow_text] = & gt; Название 4
        )

)

Как я могу проанализировать приведенные выше значения, чтобы использовать их для слайд-шоу?

Спасибо!

10 голосов | спросил webchun 14 J000000Thursday16 2016, 11:21:40

4 ответа


8

Это мое решение. Если есть какое-то лучшее решение, пожалуйста, дайте мне знать

<? php foreach ($ slideshow_items как $ item):?>
  <div class = "slideshow">
    <img src = "<? php echo $ item-> slideshow_img;>> />
    <p class = "slideshow_text">
      <? php echo $ item-> slideshow_text; ? >
    & Lt; /р >
  & Lt; /дел >
<? php endforeach; ? >
ответил webchun 14 J000000Thursday16 2016, 15:14:47
3

Сохранение данных в форме подформы в формате JSON, поэтому сначала нужно «json_decode ()», чтобы получить данные, затем запустить foreach look для получения данных.

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

<? php foreach ($ slideshow_items как $ item):?>
<div class = "slideshow">
<img src = "<? php echo $ item-> slideshow_img;>> />
<p class = "slideshow_text">
  <? php echo $ item-> slideshow_text; ? >
& Lt; /р >
& Lt; /дел >
<? php endforeach; ? >
ответил RadiusTheme 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2016 20:48:25 +0300 2016, 20:48:25
3

Если вам нужно получить только одно имя имени поля:

использовать Joomla \ Utilities \ ArrayHelper;

$ items = ArrayHelper :: getColumn ((array) $ params-> get ('subformName'), 'fieldName');
ответил piotr_cz 27 +03002016-10-27T16:54:42+03:00312016bEurope/MoscowThu, 27 Oct 2016 16:54:42 +0300 2016, 16:54:42
1

Если вы используете карусель Bootstrap. это работает для меня.

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

, если кто-то хочет улучшить или предоставить код наилучшей практики, приветствуется.

ответил Leoalv 6 PM00000080000000131 2016, 20:00:01

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132