it-swarm-vi.com

Cách thích hợp để có được toàn bộ $ _POST là gì?

Trong Joomla! 2.5.x Tôi chỉ có thể chạy JRequest::get('post'); nhưng xem là JRequest không được dùng trong Joomla! 3.x Tôi nên sử dụng JInput.

Tại thời điểm này, đây là mã tôi đang sử dụng để nhận toàn bộ $_POST:

$app = JFactory::getApplication();
$postData = $app->input->getArray(array_flip(array_keys($_POST)));

Nhưng điều này có vẻ khá cồng kềnh và tôi gặp vấn đề nếu được sử dụng cùng với $app->input->set(); Tôi nghĩ sẽ có cách nào tốt hơn?

Khi tìm kiếm cái này trước khi tôi thấy mọi người nói rằng bạn có thể chạy

$app = JFactory::getApplication();
$postData = $app->input->post;

Nhưng khi tôi thử nó, tôi chỉ cần có một thể hiện của đối tượng JInput.

26
Spunkie
$app = JFactory::getApplication();
$postData = $app->input->post;

Là cách để đi, bạn sẽ nhận được một đối tượng JInput và có thể sử dụng nó như JRequest

$var = $postData->get('varname', 'defaultvalue', 'filter');

Bộ lọc có thể là 'int', 'cmd' hoặc nhiều bộ lọc khác - danh sách đầy đủ có thể được tìm thấy trong chức năng này: https://github.com/j Joomla/j Joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7//filter/input.php#L138

Nếu bạn chỉ muốn mảng, thì bạn có thể làm

$array = $app->input->post->getArray();

Nhưng bạn nên tránh kiểu truy cập dữ liệu người dùng này mà không lọc.

31
Harald Leithner

Có vẻ như một cách khác để thực hiện điều này chỉ đơn giản là vượt qua một mảng trống:

$app = JFactory::getApplication();
$postData = $app->input->getArray(array());

Điều này sẽ truy xuất mọi thứ trong JInput data var như thể bạn đang truy cập $_REQUEST siêu.

Điều này không hoạt động trong Joomla! Phiên bản 2.5.x của JInput mặc dù.

3
Spunkie