مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

Response یا پاسخ ها در فریمورک Yii


هنگامی که یک برنامه وب یک request را پردازش یا handle می کند، یک شی پاسخ (response) ایجاد می کند که حاوی هدر HTTP، body و کد وضعیت HTTP است. در بیشتر موارد، شما از کامپوننت response برنامه استفاده می کنید که به طور پیش فرض، یک نمونه از شی  yii\web\Response است.

برای مدیریت کدهای وضعیتِ HTTP پاسخ یا response، از ویژگی yii\web\Response::$statusCode استفاده کنید.

مقدار پیش فرض  yii\web\Response::$statusCode برابر با 200 می باشد.

 

مرحله 1 - یک تابع به نام actionTestResponse  به SiteController اضافه کنید.

public function actionTestResponse() {
   Yii::$app→response->statusCode = 201;
}

مرحله 2 - اگر شما در مرورگر وب خود آدرس http://localhost:8080/index.php?r=site/testresponse, را تایپ کنید، کد وضعیت 201 را مشاهده خواهید کرد.

اگر شما قصد دارید که نشان دهید درخواستی ناموفق است، شما باید یکی از استثناء های از پیش تعریف شده HTTP را استفاده کنید :

  • yii\web\BadRequestHttpException − status code 400.
  • yii\web\UnauthorizedHttpException − status code 401.
  • yii\web\ForbiddenHttpException − status code 403.
  • yii\web\NotFoundHttpException − status code 404.
  • yii\web\MethodNotAllowedHttpException − status code 405.
  • yii\web\NotAcceptableHttpException − status code 406.
  • yii\web\ConflictHttpException − status code 409.
  • yii\web\GoneHttpException − status code 410.
  • yii\web\UnsupportedMediaTypeHttpException − status code 415.
  • yii\web\TooManyRequestsHttpException − status code 429.
  • yii\web\ServerErrorHttpException − status code 500.

مرحله 3 - تابع actionTestResponse  را همانطور که در کد زیر نشان داده شده است تغییر دهید.

public function actionTestResponse() {
   throw new \yii\web\GoneHttpException;
}

مرحله 4 - در آدرسبار مرورگر وب تان آدرس http://localhost:8080/index.php?r=site/test-response را تایپ کنید ، شما می توانید کد پاسخ 410 Gone را که در تصویر زیر نمایش داده شده است را مشاهده کنید.

مرحله 5 - شما می توانید هدر های HTTP را با ویرایش ویژگی headers از کامپوننت response ارسال کنید. برای اضافه کردن یک هدر جدید به یک پاسخ، تابع actionTestResponse  را همانطور که در کد زیر نمایش داده شده است، تغییر دهید.

public function actionTestResponse() {
   Yii::$app->response->headers->add('Pragma', 'no-cache');
}

مرحله 6 - به آدرس http://localhost:8080/index.php?r=site/test-response بروید، حال می توانید هدر برنامه ما را مشاهده نمایید.

فریمورک Yii از فرمت های پاسخ زیر پشتیبانی می کند :

  • HTML – پیاده سازی شده توسط  implemented by yii\web\HtmlResponseFormatter.
  • XML - پیاده سازی شده توسط yii\web\XmlResponseFormatter.
  • JSON - پیاده سازی شده توسط yii\web\JsonResponseFormatter.
  • JSONP - پیاده سازی شده توسط yii\web\JsonResponseFormatter.
  • RAW - پاسخ بدون هیچ گونه قالب بندی و فرمتی.

مرحله 7 - برای پاسخ دادن به فرمت JSON، تابع actionTestResponse را ویرایش کنید.

public function actionTestResponse() {
   \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
   return [
      'id' => '1',
      'name' => 'Ivan',
      'age' => 24,
      'country' => 'Poland',
      'city' => 'Warsaw'
   ];
}

مرحله 8 – در این مرحله در نوار آدرسبار مرورگرتان آدرس http://localhost:8080/index.php?r=site/test-response را تایپ کنید.اکنون می توانید پاسخ JSON را مطابق با تصویر زیرمشاهده کنید.

فریمورک Yii یک تغییر مسیر در مرورگر را با ارسال موقعیت هدر HTTP پیاده سازی می کند.

شما می توانید از متد yii\web\Response::redirect() برای هدایت مرورگر کاربر به یک URL دیگراستفاده کنید.

مرحله 9 - تابع actionTestResponse را مطابق با کد زیر ویرایش کنید.

public function actionTestResponse() {
   return $this->redirect('https://clicksite.org');
}

حال اگر شما به آدرس http://localhost:8080/index.php?r=site/test-response بروید، مرورگر شما به وب سایت https://clicksite.org تغییر مسیر می دهد.

ارسال فایل ها

فریمورک Yii متدهای زیر را برای پشتیبانی از ارسال فایل ها ارائه می دهد -

  • yii\web\Response::sendFile() - فایل موجود را ارسال می کند.
  • yii\web\Response::sendStreamAsFile() - یک فایل stream موجود را به عنوان یک فایل ارسال می کند.
  • yii\web\Response::sendContentAsFile()  - یک رشته متن را به عنوان یک فایل ارسال می کند.

تابع actionTestResponse را مطابق با کد زیر ویرایش کنید -

public function actionTestResponse() {
   return \Yii::$app->response->sendFile('favicon.ico');
}

در آدرسبار مرورگر وبتان آدرس http://localhost:8080/index.php?r=site/test-response را تایپ کنید ، یک پنجره محاوره ای برای دانلود فایل favicon.ico برای شما نمایش داده می شود -

تا زمانی که تابع yii\web\Response::send() فراخوانی نشود، پاسخ ارسال نمی شود. بطور پیش فرض این متد در آخر متد yii\base\Application::run() فراخوانی می شود.

برای ارسال یک پاسخ، متد yii\web\Response::send() این مراحل را طی می کند :

  • رویداد  yii\web\Response::EVENT_BEFORE_SEND را اجرا می کند
  • متد yii\web\Response::prepare() را فراخوانی می کند.
  • رویداد yii\web\Response::EVENT_AFTER_PREPARE را اجرا می کند.
  • متد yii\web\Response::sendHeaders() را فراخوانی می کند.
  • متد yii\web\Response::sendContent() را فراخوانی می کند.
  • رویداد yii\web\Response::EVENT_AFTER_SEND را اجرا می کند.
فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید