Анонимная функция против строкового литерального контроллера в Laravel - PullRequest
0 голосов
/ 24 июня 2019

В чем разница между двумя кодами маршрута?

Один не имеет контроллера и второй имеет контроллер:

  • Версия 1

    Route::get('/', function () {
        return view('front/index');
    })
    
  • Версия 2

    Route::get ('/main', 'MainController@index');
    

Ответы [ 3 ]

0 голосов
/ 24 июня 2019

Первый возвращает вид непосредственно с помощью функции, поэтому, когда вы нажмете на маршрут «/», он вернет вид спереди / индекс.front-> index.blade.php

Еще один вызывает контроллер 'MainController', у которого есть индекс функции:

public function index() {
    return view('front.index);
}

, который будет возвращать функцию индекса из контроллера MainController при нажатии /основной URL.Они делают то же самое, но использование Controller помогает вам упорядочить код и прочее в долгосрочной перспективе

надеюсь, что это поможет

0 голосов
/ 24 июня 2019

В Laravel вы можете полностью пропустить контроллеры и выполнить задачу по выполнению бизнес-логики и генерации представления в маршрутах, например:

Route::get('/users',function()
{
    $users = User::All();   //select * from users
    return view('users')->with('users', $users);
}

Итак, для обработки запроса /users мы вообще не использовали контроллер, и вы вполне можете сделать это для обработки всех запросов в вашем приложении, как получения, так и отправки. Laravel позволяет вам выполнять свою работу в замыкании (function(){}) вместо привязки его к контроллеру. В любом случае, это позволяет, но вам лучше этого избежать.

Но тогда, если ваше приложение большое и имеет более 100 URL-адресов со сложной бизнес-логикой, тогда представьте, что все помещается в один маршрутизацию / web.php. Это сделает его преступно грязным, и вся цель архитектуры MVC будет побеждена. Поэтому мы обычно резервируем web.php только для маршрутизации и пишем всю бизнес-логику (вместе с генерацией представлений внутри контроллеров).

В Route::get() вам нужно только следовать своей «маршрутизации» и ничего более.

Нет никаких причин использовать обратные вызовы в Route (кроме как для тестирования или некоторых тривиальных запросов). Так что лучше этого избежать:

Изменить этот код:

Route::get("/", function(){
    return view("front.index");
});

К этому:

Route::get ('/', 'MyController@index');

А внутри вашего контроллера:

class MyController extends Controller
{
   function index()
   {
      return view("front.index");
   }
}

Надеюсь, это поможет.

0 голосов
/ 24 июня 2019

Версия 1 Возвращает маршрут '/' вместе с видом, найденным в 'front / index'

Версия 2 Возвращает маршрут в '/ main'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...