Nhận giá trị của trường lặp lại từ tệp kê khai Joomla XML


7

lặp lại - Làm thế nào để có được các giá trị từ loại trường này?

Tôi đang mã hóa một mô-đun miễn phí với một trường lặp lại.

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

Đối với một tham số mô-đun bình thường, tôi có thể nhận được giá trị như thế này

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

Nếu tôi làm tương tự cho trường lặp lại

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

Tôi nhận được tất cả các giá trị của trường chính - Trông giống như một đầu ra mảng.

Làm thế nào để làm điều này cho một trường mẫu lặp lại và nhận giá trị của MACHI lặp lại của trường?

Ví dụ, trong trường hợp trên, mục tiêu của tôi là lấy giá trị của trường "main_image" cho mỗi lần lặp lại. Tôi đang nghĩ sử dụng "cho mỗi" nhưng không chắc chắn làm thế nào để vượt qua và kéo các giá trị của từng hàng, từng trường - từng trường một.

Câu trả lời:


2

Vì bạn đang nhận dữ liệu từ cuộc gọi của mình và đó là một mảng 'bạn có thể thực hiện một cách đơn giản (Làm việc từ ý tưởng rằng bạn đang làm việc trên máy chủ / hệ thống của nhà phát triển)

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

Điều này sẽ cho bạn thấy dữ liệu nào bạn đang lấy ra và sau đó bạn có thể kiểm tra xem dữ liệu đó có chứa dữ liệu cần thiết của bạn không (dữ liệu nào cần).

Sau đó, bạn có thể sử dụng một vòng lặp foreach đơn giản để có được những gì bạn muốn

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

(Và nếu bạn muốn tên của trường lặp đi lặp lại)

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

Hoặc, bạn sẽ có thể thực hiện $ test ['trường'] đơn giản như một giá trị mảng thông thường. Hãy nhớ rằng bạn có thể cần phải đào sâu một chút vào mảng bằng cách 'foreach bổ sung hoặc làm cho foreach đầu tiên của bạn bắt đầu ở mảng thứ cấp nếu cần.


Đã chỉnh sửa câu trả lời trên
Sao

2
@ Star, chỉnh sửa câu trả lời và thay đổi hoàn toàn (bạn chỉ để lại 3 từ từ câu trả lời ban đầu ...) không phải là cách chính xác để sử dụng JSE. Hãy bình luận nếu cần, hoặc thêm câu trả lời khác nếu bạn đã tìm ra giải pháp.
johanpw

@johanpw - Chà - Tôi đã chỉnh sửa câu trả lời vì nó sẽ gây nhầm lẫn cho bất kỳ người dùng nào giống như nó đã làm với tôi. Đây là một câu hỏi cụ thể của Joomla và câu trả lời của tôi có liên quan hơn. Có vẻ như bạn đã không chấp nhận câu trả lời của tôi rất gần với việc hoàn thành - Bằng cách làm như vậy, bạn KHÔNG LÀM GÌ NÀO TỐT trong JSE.
Sao

1
@ Star, chỉnh sửa của bạn nên được đăng dưới dạng câu trả lời. Nếu nó giải quyết vấn đề của bạn, bạn có thể đánh dấu nó là chấp nhận, nếu không nó có thể giúp người dùng khác cung cấp cho bạn câu trả lời đầy đủ hơn. Nếu câu trả lời ở trên không chính xác, bạn có thể gắn cờ cho sự chú ý của người điều hành. Tôi vẫn có một bản sao chỉnh sửa ban đầu của bạn nếu bạn muốn đăng nó dưới dạng câu trả lời.
johanpw

"Khi tôi lặp lại nội dung trên bộ trường j Joomla có thể lặp lại, tôi nhận được kết quả như sau: {"Field1":["/demo/slide1.jpg","/demo/slide2.jpg"],"Field2":["Content 1","Content 2"],"Field 3":["Content 3","Content 4"]} Bây giờ kết quả trên có được- $params->get('star_slides'); Trên đây chỉ là một câu trả lời dựa trên những gì tôi đã làm cho đến nay. Mục tiêu của tôi là trích xuất các giá trị riêng lẻ của các trường Đặt 1 - Giá trị của trường đầu tiên được đặt. /demo/slide1.jpg Nội dung 1 Nội dung 3 Làm cách nào tôi có thể thực hiện việc này bằng php? "
johanpw

0

Nếu

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

print_r($test);

có được một mảng tương tự

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 ) )

sử dụng

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

Luk

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.