0 レビュー
3 回答
php-Yii2:_POSTメソッドデータにアクセスする方法
あるアクションから別のアクションへのフォームデータの送信
<?php $form = ActiveForm::begin(['action' =>'site/roomsearch','method' => 'post']); ?>
<?= $form->field($model, 'arrival')->label(false) ?>
<?= $form->field($model, 'departure')->label(false) ?>
<?= Html::submitButton('Send', ['class' => 'btn btn-white']) ?>
<?php ActiveForm::end(); ?>
インデックスページには上記の形式があり、そこから actionRoomsearch()
actionindex():
public function actionIndex()
{
$model = new \yii\base\DynamicModel(['arrival','departure','adult','child']);
if($model->load(Yii::$app->request->post()))
{
$arrival = $model->arrival;
$departure = $model->departure;
return $this->redirect([
'roomsearch',
'arrival' => $arrival ,
'departure' => $departure
]);
}
return $this->render('index', ['model'=>$model]);
}
アクション{-コード-7}():
{
$post = Yii::$app->request->post();
$arrival = $post['arrival'];
$departure = $post['departure'];
return $this->render('roomsearch',[
'arrival' =>$arrival,
'departure' => $departure,
]);
}
roomsearch
ページにarrival
とdeparture
を表示するにはどうすればよいですか?< / p>
\yii\base\DynamicModel
わからない
0
レビュー
答え :
解決策:
あるアクションから別のアクションにリダイレクトしているため、2番目のアクションでPOSTデータにアクセスすることはできません。ただし、getparametersとして渡すことができます
return $this->redirect(\yii\helpers\Url::to([
'/you_controller/your_action',
'arrival' => $arrival ,
'departure' => $departure
]));
2番目のアクションで
$arrival = yii::$app->request->get('arrival');
$departure = yii::$app->request->get('departure');
わからない
0
レビュー
答え :
解決策:
データベースにデータを保存する必要がないため、動的モデルを使用しました
public function actionIndex()
{
$model = new \yii\base\DynamicModel(['arrival','departure']);
$model->addRule(['arrival', 'departure'], 'string', ['max' => 128]);
$arrival = $model->arrival;
if($model->load(Yii::$app->request->post()))
{
$arrival = $model->arrival;
$departure = $model->departure;
$model->save();
}
return $this->render('index', ['model'=>$model]);
}
actionRoomsearchでPOSTメソッドデータを取得するには
public function actionRoomsearch()
{
$data = yii::$app->request->post();
if(isset($data['DynamicModel']))
{
$arrival = $data['DynamicModel']['arrival'];
$departure = $data['DynamicModel']['departure'];
}
return $this->render('roomsearch',['arrival' =>$arrival,'departure' => $departure]);
}
ページにデータを表示するには<?php echo $arrival; ?>
わからない
0
レビュー
答え :
解決策:
これは2つのリクエスト間の通信であるため。 Flashを使用したい
注:Flashは、次のリクエスト後に自動的に削除されます。
public function actionIndex()
{
$model = new \yii\base\DynamicModel(['arrival', 'departure', 'adult', 'child']);
if($model->load(Yii::$app->request->post()))
{
Yii::$app->session->setFlash('arrival', $model->arrival);
Yii::$app->session->setFlash('departure', $model->departure);
return $this->redirect(['roomsearch']);
}
return $this->render('index', ['model'=>$model]);
}
部屋の検索ページ
public function actionRoomSearch()
{
$session = Yii::$app->session;
$arrival = $session->hasFlash('arrival') ? $session->getFlash('arrival') : null;
$departure = $session->hasFlash('departure') ? $session->getFlash('departure') :null;
//Do whatever you like with the data
}
$ _ GETよりもこの方法を好む理由は、 セキュリティ上重要なデータをページ経由で送信する必要があり、送信しない場合 ブラウザのアドレスバーに表示したい。 例:非表示フィールドに投稿されたID。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。