
درخواست های Http در فریمورک Yii
Requestهایی که توسط شیء yii\web\Request ارائه داده می شوند اطلاعاتی در مورد headerهای HTTP، پارامترهای request، کوکی ها و غیره ارائه می دهند.
متدهای get() و post() پارامترهای request را از کامپوننت request بازمی گردانند.
مثال -
$req = Yii::$app->request;
/*
* $get = $_GET;
*/
$get = $req->get();
/*
* if(isset($_GET['id'])) {
* $id = $_GET['id'];
* } else {
* $id = null;
* }
*/
$id = $req->get('id');
/*
* if(isset($_GET['id'])) {
* $id = $_GET['id'];
* } else {
* $id = 1;
* }
*/
$id = $req->get('id', 1);
/*
* $post = $_POST;
*/
$post = $req->post();
/*
* if(isset($_POST['name'])) {
* $name = $_POST['name'];
* } else {
* $name = null;
* }
*/
$name = $req->post('name');
/*
* if(isset($_POST['name'])) {
* $name = $_POST['name'];
* } else {
* $name = '';
* }
*/
$name = $req->post('name', '');
مرحله 1 - تابعی به نام actionTestGet را به SiteController در قالب پایه برنامه اضافه کنید.
public function actionTestGet() {
var_dump(Yii::$app->request->get());
}
مرحله 2 - حالا به آدرس http://localhost:8080/index.php?r=site/testget&id=1&name=tutorialspoint&message=welcomeبروید، آنچه که مشاهده خواهید کرد مطابق با تصویر زیر می باشد.
برای بازیابی پارامترهای متد های درخواست دیگر (PATCH، DELETE، و غیره) از متد yii\web\Request::getBodyParam() استفاده کنید.
برای دریافت (get) متد HTTP درخواست جاری، از property یا ویژگی Yii::$app→request→method استفاده کنید.
مرحله 3 - تابع actionTestGet را همانطور که در کد زیر نشان داده شده تغییر دهید.
public function actionTestGet() {
$req = Yii::$app->request;
if ($req->isAjax) {
echo "the request is AJAX";
}
if ($req->isGet) {
echo "the request is GET";
}
if ($req->isPost) {
echo "the request is POST";
}
if ($req->isPut) {
echo "the request is PUT";
}
}
مرحله 4 – به آدرس http://localhost:8080/index.php?r=site/test-get بروید. آنچه که مشاهده خواهید کرد مطابق با تصویر زیر می باشد.
کامپوننت Request خصوصیات یا propertyهای زیادی را برای بررسی آدرس های درخواست شده فراهم می کند.
مرحله 5 - تابع actionTestGet را به صورت زیر تغییر دهید.
public function actionTestGet() {
//the URL without the host
var_dump(Yii::$app->request->url);
//the whole URL including the host path
var_dump(Yii::$app->request->absoluteUrl);
//the host of the URL
var_dump(Yii::$app->request->hostInfo);
//the part after the entry script and before the question mark
var_dump(Yii::$app->request->pathInfo);
//the part after the question mark
var_dump(Yii::$app->request->queryString);
//the part after the host and before the entry script
var_dump(Yii::$app->request->baseUrl);
//the URL without path info and query string
var_dump(Yii::$app->request->scriptUrl);
//the host name in the URL
var_dump(Yii::$app->request->serverName);
//the port used by the web server
var_dump(Yii::$app->request->serverPort);
}
مرحله 6 - در نوار آدرس مرورگر وبتان http://localhost:8080/index.php?r=site/testget&id=1&name=tutorialspoint&message=welcome را تایپ کنید، آنچه که مشاهده می کنید مطابق با تصویر زیر می باشد.
مرحله 7 - برای دریافت اطلاعات هدر HTTP، شما می توانید از ویژگی yii\web\Request::$headers استفاده کنید. تابع actionTestGet را مطابق کد زیر ویرایش کنید.
public function actionTestGet() {
var_dump(Yii::$app->request->headers);
}
مرحله 8 - اگر شما به آدرس http://localhost:8080/index.php?r=site/testget&id=1&name=tutorialspoint&message=welcome ، بروید خروجی که مشاهده خواهید کرد مطابق با تصویر زیر می باشد.
برای دریافت نام هاست و IP آدرس دستگاه مشتری، از پروپرتی های userHost و userIP استفاده کنید.
مرحله 9 - تابعactionTestGet را به شکل زیر ویرایش کنید.
public function actionTestGet() {
var_dump(Yii::$app->request->userHost);
var_dump(Yii::$app->request->userIP);
}
مرحله 10 - به آدرس http://localhost:8080/index.php?r=site/test-get بروید. انچه که مشاهده می کنید مطابق با تصویر زیر است.
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…