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


26

Trong Joomla! 2.5.x Tôi chỉ có thể chạy JRequest::get('post');nhưng thấy như JRequestbị phản đối 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 để lấy 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, 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 lấy một thể hiện của JInputđối tượng.


Câu trả lời:


31
$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 / l .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.


1
Thường thì tôi cần lấy toàn bộ $_POSTmà không thực sự biết tên của các vars tôi cần lấy, đó là lý do tại sao sử dụng JInputđối tượng như thế không hữu ích trong nhiều trường hợp. Vẫn là một câu trả lời tốt.
Spunkie

2
Là một FYI $app->input->post->getArray();Chỉ có giá trị trên Joomla 3.2.0 trở lên. Và trong bất kỳ phiên bản nào trước đó (bao gồm 2,5) bạn phải sử dụng$app->input->getArray($_POST)
George Wilson

3

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ẽ lấy tất cả mọi thứ trong JInputvar dữ liệu như thể bạn đang truy cập vào $_REQUESTsiêu.

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


-3

Hy vọng điều này sẽ làm việc,

JRequest :: get ('bài');

Điều này sẽ giúp bạn lấy dữ liệu từ $ _POST tương đương trong PHP.


2
Câu hỏi nói rõ rằng phương pháp này không được chấp nhận, vì vậy OP đang tìm kiếm phương thức cập nhật bằng JInput.
David Fritsch

@Harald bạn có muốn thanh trừng câu trả lời này với các đặc quyền đặc biệt của bạn? Người dùng này dường như "đã qua lâu".
mickmackusa
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.