За последние 24 часа нас посетили 18037 программистов и 1604 робота. Сейчас ищут 1348 программистов ...

Роутер

Тема в разделе "Laravel", создана пользователем Dimon2x, 18 май 2018.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Не понимаю, у меня прописано

    PHP:
    1. Route::get('auth/login', 'Auth\AuthController@getLogin');
    Но этого контроллера, в папке нету

    555.jpg

    Если этот роут удалить, то почему-то, если по этому адресу перейти, то всё работает, почему?

    Это было создано из коробки артисана.
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    php artisan route:list
    --- Добавлено ---
    composer dump-autoload
    php artisan route:clear
     
  3. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @nospiou Class App\Http\Controllers\Auth\AuthController does not exist
    --- Добавлено ---
    @nospiou тогда где мне найти этот роут, по которому вызывается LoginController?

    555.jpg
    --- Добавлено ---
    Я так понял, что этот контроллер вызывает Auth::routes()?

    Но почему, тогда клик по этому методу не работает?
    --- Добавлено ---
    Тогда лучше не использовать, авторизацию из коробки, а создать свою?
     
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Как больше нравится. Там еще роуты на регистрацию смену и восстановления пароля плюс шаблоны но и самому написать не сложно. У меня вот апи как не крути а все пришлось переписывать.
     
  5. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Не понимаю, почему, если сделать так

    PHP:
    1. Route::group(['namespace' => 'Auth'], function(){
    2.     Route::resource('/mylogin', 'MyAuthController');
    3. });
    то по умолчанию, будет срабатывать метод index,

    а если его передать, то будет ошибка?

    PHP:
    1. Route::group(['namespace' => 'Auth'], function(){
    2.     Route::resource('/mylogin', 'MyAuthController@index');
    3. });

    Method [index@index] does not exist.
     
  6. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
  7. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @nospiou делал так, почему не работало, сейчас работает
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    LoginController.php
     
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    не видишь. а он есть! :)
     
  10. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Я не понял, это означает?

    PHP:
    1. Route::get('user/profile', function () { // })->name('profile');
    Думал, что это означает переход на роут profile, но это не так.
    --- Добавлено ---
    Кажись дошло, это просто метка, для того, что бы перенаправить на нужный маршрут.

    PHP:
    1. Route::get('silka', function(){
    2.      return redirect()->route('profile');
    3. });
    4.  
    5. Route::get('user/profile', function () {
    6.    echo 333;
    7. })->name('profile');
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    это значит, что при переходе по адресу:
    you.domain.dz/user/profile нужно отобразить то, что вернет анонимная функция, переданная вторым параметром.
     
  12. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    Только где это использовать? Это же в принципе не нужно?
    --- Добавлено ---
    @TeslaFeo дополнил
    --- Добавлено ---
    Как вывести параметр ddd?

    PHP:
    1. Route::get('silka', function(){
    2.      return redirect()->route('profile', ['ddd' => 111]);
    3. });
    4.  
    5. Route::get('user/profile', function () {
    6.    echo $ddd;
    7. })->name('profile');
    --- Добавлено ---
    @TeslaFeo Я хочу узнать, для чего ->name
     
  13. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    PHP:
    1. Route::get('user/profile', function ($ddd) {
    2.    echo $ddd;
    3. })->name('profile');
    просто названия для роута что бы не вбивать везде полный путь который может измениться.
    https://laravel.com/docs/5.6/routing#named-routes
     
    Dimon2x нравится это.
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @Dimon2x, так, благодаря тебе, вся дока Laravel перекочует на этот форум.
    Иногда удобно, когда не хочется писать контроллер для простого действия. Правда, больше характерны для микрофреймворках роуты с анонимными функциями
     
  15. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    @mkramer @nospiou я не понимаю, как должно работать? Пустая страница.

    PHP:
    1. Route::get('user/profile', function () {
    2. })->name('/profile');
    Именованные маршруты позволяют удобное создание URL-адресов или перенаправление для определенных маршрутов.Вы можете указать имя маршрута, связав метод имени с определением маршрута:

    имя маршрута - user/profile
    метод имени - profile
     
  16. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @Dimon2x, ну да, пустая страница, функция-обработчик же ничего не выводит. Имена нужны, чтоб потом можно было быстро генерировать ссылку:
    PHP:
    1. Route::get('user/profile', function () {
    2.    echo "Здеся профиль";
    3. })->name('profile');
    4. Route::get("news", function () {
    5.    printf("Здеся новости, а <a href='%s'>тута</a> профиль", route("profile"));
    6. });
    И это всё описано в доках. У меня секретного источника информации по Laravel нету :)
    --- Добавлено ---
    Преимущество - если потом заказчик попросит, чтоб профиль открывался по урлу /haramamburu, то ты изменишь это только в одном месте, а не будешь везде по коду лазить, искать эту ссылку.
     
    Dimon2x нравится это.
  17. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Найди 5 отличий

    PHP:
    1. // 1
    2. Route::get('user/{user}', "UserController@show")
    3.  
    4. public function show(Request $request, User $user) {
    5.     return view("user.show");
    6. }
    7. // 2
    8. Route::get('user/{user}', function (Request $request, User $user) {
    9.     return view("user.show");
    10. })
     
    Dimon2x нравится это.
  18. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761