私はコードを持っています
$str = '';
foreach ($_POST as $k => $v) {
$str .= $k.'='.$v;
}
CHttpRequestで同じことをすることは可能ですか?そのための方法が見つかりませんでした。
最後にそれをmd5する必要があるので、セキュリティの問題はありません。
CHttpRequestが投稿データを取得することを目的としているとは思いません。Yii自体は$_POST変数を使用します。たとえば、Giiのデフォルトの出力は次のようになります。
public function actionCreate()
{
$model=new Model;
// Uncomment the following line if AJAX validation is needed
// $this->performAjaxValidation($model);
if(isset($_POST['Model'])) //<- POST data var
{
$model->attributes=$_POST['Model']; //<- POST data var
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
$this->render('create',array(
'model'=>$model,
));
}
CHttpRequestコンポーネントを拡張し、パブリックメソッドgetPost()を書き換えることができます
class HttpRequest extends CHttpRequest {
public function getPost($name = null, $defaultValue = null) {
$data = ($this->_isJsonEncoded()) ? \CJSON::decode($this-
>getRawBody()) : $_POST;
if (isset($data[$name])) {
return $data[$name];
} elseif (isset($defaultValue)) {
return $defaultValue;
} else {
return $data;
}
}
}
config/main.phpファイルに新しいコンポーネントクラスを含めることを忘れないでください。
'request' => [
'class' => 'application.components.HttpRequest',
],
これで、次の方法ですべての$_POSTデータを取得できます。
Yii::app()->request->getPost();
getRestParams()を使用して配列を取得できます。
Yii::app()->request->getRestParams()
また
Yii::$app->request->getRestParams()