$ _POST全体を取得する適切な方法は何ですか?


26

Joomla!で 2.5.x単純に実行できJRequest::get('post');ましたJRequestが、Joomla!3.xを使用する必要がありますJInput

現時点では、これは全体を取得するために使用しているコードです$_POST

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

しかし、これはかなり面倒なようで、一緒$app->input->set();に使用すると問題が発生します。より良い方法があると思いますか?

単純に実行できると言っている人を見つける前にこれを検索するとき

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

しかし、これを試してみると、JInputオブジェクトのインスタンスを取得しただけです。


回答:


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

行く方法です、JInputオブジェクトを取得し、JRequestのように使用できます

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

フィルターは「int」、「cmd」または他の多くの可能性があります-完全なリストはこの関数にあります:https : //github.com/joomla/joomla-cms/blob/a3df15f1ddad6d9051d53f939b6afd2f5fca60b7/libraries/joomla/filter/input .php#L138

配列のみが必要な場合は、次のことができます

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

ただし、フィルタリングなしでユーザーデータにアクセスするこのスタイルは避ける必要があります。


1
多くの場合、$_POST実際に取得する必要のある変数の名前を実際に知らずに全体を取得する必要があるため、JInput多くの場合、そのようなオブジェクトの使用は有用ではありません。それでも良い答えです。
スパンキー14

2
$app->input->post->getArray();参考までにThe はJoomla 3.2.0以降でのみ有効です。以前のバージョン(2.5を含む)では、使用する必要があります$app->input->getArray($_POST)
ジョージウィルソン

3

これを達成する別の方法は、単に空の配列を渡すことです。

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

これによりJInput$_REQUESTスーパーにアクセスしているようにデータ変数のすべてが取得されます。

これはJoomla!では機能しません。JInputただし、2.5.xバージョン。


-3

これがうまくいくことを願って、

JRequest :: get( 'post');

これは、PHPで同等の$ _POSTからデータを取得するのに役立ちます。


2
質問では、このメソッドは非推奨であることが明確に示されているため、OPはJInputを使用して更新されたメソッドを探しています。
デビッドフリッチュ

@Haraldは、あなたの特別な特権でこの答えを削除してくれませんか?このユーザーは「なくなってしまった」ようです。
mickmackusa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.