Làm cách nào để truy cập một mảng trong $ _GET bằng JInput?


7

Tôi đã nghiên cứu nhiều cách khác nhau để có được một mảng bằng JInput.

Theo http://docs.j Joomla.org/Retrieving_Vquest_data_USE_JInput có 2 phương thức mà tôi có thể sử dụng.

  • Phương pháp1

    $jinput = JFactory::getApplication()->input;
    $jinput->get('nameOfArray',array(),'ARRAY');
    
  • Phương pháp 2

    $jinput = JFactory::getApplication()->input;
    $jinput->getArray('nameOfArray',array());
    

Lưu ý: nameOfArraylà tên của mảng tôi muốn truy cập trong mảng siêu lớp $ _GET.

Phương thức 1 hoạt động, nhưng Phương thức 2 đưa ra lỗi sau:

Lỗi nghiêm trọng có thể bắt được: Đối số 1 được truyền cho JInput :: getArray () phải thuộc kiểu mảng, chuỗi đã cho, được gọi trong test.php

Câu hỏi của tôi là: sự khác biệt giữa hai phương pháp này là gì?

  • Mảng được sử dụng trong cả hai ví dụ là như nhau
  • Tôi đang sử dụng Joomla 2.5.x
  • Mảng là một mảng đa chiều.

Câu trả lời:


5

Phương thức đầu tiên tìm kiếm các phần tử bắt đầu bằng tên mà bạn đã chỉ định:

<input type="hidden" name="nameOfArray[test][1]" value="test" />
<input type="hidden" name="nameOfArray[]" value="test" />
<input type="hidden" name="nameOfArray[test][]" value="test" />
<input type="hidden" name="nameOfArray[tester][yes]" value="test" />

Tất cả những điều trên sẽ được trả về như là một phần của mảng trong phương thức một.


Phương pháp hai không cố tải một mảng theo tên, thay vào đó, nó chấp nhận một mảng và cố gắng tìm các phần tử đầu vào để khớp với các khóa. Lấy đầu vào sau:

<input type="hidden" name="object1" value="test1" />
<input type="hidden" name="name2" value="test2" />
<input type="hidden" name="element3" value="test3" />

Nếu sau đó bạn đã làm như sau:

$elements = array('object1'=>'', 'name2'=>'', 'element3'=>'');
$jinput = JFactory::getApplication()->input;
$jinput->getArray($elements); // note that the second parameter is "datasource" not default value

Sau đó, bạn sẽ nhận được một mảng như vậy trong $element:

array('object1'=>'test1', 'name2'=>'test2', 'element3'=>'test3');

1
Yeap, và các tài liệu là sai. Tôi đã thay đổi nó.
Dmitry Rekun
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.