Joomla XMLマニフェストから反復可能フィールドの値を取得する


7

反復可能-このフィールドタイプから値を取得する方法

私は繰り返し可能なフィールドでFreeモジュールをコーディングしています。

<field name="star_slides" type="Repeatable" icon="list" description="" label="Edit Your Slides" default="{'main_image':[''],'left_side':[''],'right_side':['']}">

通常のモジュールパラメータの場合、次のような値を取得できます

$test         = $params->get('test');

繰り返し可能なフィールドに同じことをした場合

$test         = $params->get('star_slides');

メインフィールドのすべての値を取得します-配列出力のように見えます。

繰り返し可能なフォームフィールドに対してこれを行う方法と、フィールドの各繰り返しの値を取得する方法は?

たとえば、上記の場合の私の目標は、繰り返しごとにフィールド「main_image」の値を取得することです。「for each」の使用を考えていますが、各行、各フィールドの値を1つずつ取得してプルする方法がわかりません。

回答:


2

あなたはあなたの呼び出しからデータを取得していて、それが配列であるので、あなたは簡単に行うことができます(あなたが開発者サーバー/システムで働いているという考えからワークアウトします)

echo '<pre>';
print_r($test);
echo '</pre>';

これにより、取得するデータが表示され、必要なデータが含まれているかどうかを確認できます(必要な場合)。

次に、単純なforeachループを使用して、必要なものを取得できます

foreach($test as $val){
   //Store in another array or do what ever you want with the values
}

(そして、繰り返しフィールドの名前も必要な場合)

foreach($test as $key => $val){
       //Store in another array or do what ever you want with the values
}

または、通常の配列値のような単純な$ test ['field']を実行できるはずです。追加のforeachを使用するか、必要に応じて最初のforeachをセカンダリアレイから開始することにより、アレイを少し掘り下げる必要がある場合があることに注意してください。


上記の回答を編集
Star

2
@Star、回答を編集して完全に変更する(元の回答から3ワードしか残っていない...)ことは、JSEを使用する正しい方法ではありません。必要に応じてコメントするか、解決策を見つけた場合は別の回答を追加してください。
johanpw

@johanpw-まあ-私と同じようにユーザーを混乱させるので、私は答えを編集しました。これはJoomla固有の質問であり、私の回答の方が適切でした。完了に非常に近い私の回答を承認しなかったようです-そうすることで、JSEで何もうまくいきません。
スター

1
@スター、あなたの編集は答えとして投稿されるべきです。問題が解決した場合は、それを承認済みとしてマークできます。そうでない場合は、他のユーザーがより完全な回答を得るのに役立つ可能性があります。上記の回答が正しくない場合は、モデレーターの注意を促すためにフラグを立てることができます。回答として投稿したい場合は、元の編集のコピーがまだあります。
johanpw

「繰り返し可能なjoomlaフィールドセットの内容をエコーすると、次の結果{"Field1":["/demo/slide1.jpg","/demo/slide2.jpg"],"Field2":["Content 1","Content 2"],"Field 3":["Content 3","Content 4"]} が得られます。上記の結果は次 のようにして得られます$params->get('star_slides'); -上記は、これまでに行ったことに基づく部分的な回答にすぎません。私の目標は、フィールドセット1-最初のフィールドセットの値/demo/slide1.jpgコンテンツ1コンテンツ3 phpを使用してこれを行うにはどうすればよいですか? "
johanpw

0

もし

$test = $params->get('star_slides');

そして

print_r($test);

同様の配列を取得する

Array ( [image] => Array ( [0] => images/blog/blog_01.jpg [1] => images/blog/blog_02.jpg [2] => images/blog/blog_03.jpg ) [image_alt] => Array ( [0] => Web Designer [1] => Graphic Designer [2] => Painting Outdoors ) )

使用する

foreach ($test['image'] as $k => $v) {
  echo $v; // image
  echo $test['image_alt'][$k]; // etc.
}

ルク

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.