Коды HTTP ответов в Laravel

Действия контроллеров могут возвращать несколько различных результатов. К примеру, часто для этого используется функция представления view или же простой возврат текста:
<?php
   namespace App\Http\Controllers;
   use App\Http\Controllers\Controller;
   class MouseController extends Controller{
      public function showView(){
         return view('mouse.show');
      }
      public function showText(){
         return 'Тише, мыши, кот на крыше!';
      }
   }
?>
Но существует и ещё один вариант. Иногда бывает полезным возвращать объект класса Response. Этот объект позволяет установить HTTP код ответа и заголовок. Первым параметром ему передаётся текст ответа, а вторым - код статуса страницы.
<?php 
   new Response('Привет', 200)); // страница загружена
   new Response('Страница не найдена', 404)); // нет такого документа
   new Response('Ошибка сервера', 500)); // сервер выдал ошибку
?>
Если нужно добавить ещё один заголовок, то можно использовать метод header. Метод можно применять несколько раз, чтобы задать все необходимые данные заголовков.:
<?php 
   new Response('Привет', 200))->header('Content-Type', 'text/plain');

   new Response('Привет', 200))->header('Content-Type', 'text/plain')
      ->header('X-Header-Food', 'Cheese')
      ->header('X-Header-Animal', 'Mouse');
?>
Если нужно передать много заголовков, то можно использовать метод withHeaders, которому передаётся массив из заголовков и значений:
<?php 
   new Response('Привет', 200))->withHeaders([
      'Content-Type' => 'text/plain',
      'X-Header-Food' => 'Cheese',
      'X-Header-Animal' => 'Mouse',
   ]);
?>
На практике возврат этого объекта класса Response можно делать непосредственно в строке return или с помощью вспомогательной функции response:
<?php
   namespace App\Http\Controllers;
   use App\Http\Controllers\Controller;
   class MouseController extends Controller{
      public function show1(){
         return (new Response('Привет', 200))->header('Content-Type', 'text/plain');
      }
      public function show2(){
         return response('Привет', 200)->header('Content-Type', 'text/plain');
      }
   }
?>
Если нужно одновременно использовать методы класса Response и возвращать шаблон, то можно использовать метод view:
<?php
   namespace App\Http\Controllers;
   use App\Http\Controllers\Controller;
   class MouseController extends Controller{
      public function show(){
         return response()->view('mouse.show')
            ->header('Content-Type', 'text/plain');
      }
   }
?>
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб