web-dev-qa-db-ja.com

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

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オブジェクトのインスタンスを取得しただけです。

26
Spunkie
$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();

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

31
Harald Leithner

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

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

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

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

3
Spunkie