Size: a a a

2021 March 09

zN

zVlad Nesquik in Laravel UA
источник

J

Jeen in Laravel UA
zVlad Nesquik
Привіт :)
Допоможіть в організації роутінга.
На сайті є 5 ролей. У сайбутньому буде додано ще 3 ролі.

Зараз у файлі Dashboard прописані функції для всих ролей (картинка)
Ну и роутінг у всих одинаковий (данні і функції, шаблони - різні)
Як би ви організували таке?
Мої варіанти:
1. Файли контролерів будуть лежати для кожного ролі користувача. Також і шаблони
2. В файлі Роутера прописати роутери для кожної ролі і файли контроллерів теж на кожну роль.
Не понятно написано про варианты, которые ты расматриваеш
источник

zN

zVlad Nesquik in Laravel UA
Jeen
Не понятно написано про варианты, которые ты расматриваеш
А які можеш запропонувати?
источник

J

Jeen in Laravel UA
zVlad Nesquik
А які можеш запропонувати?
От сложности зависит. Если там все достаточно просто, можно все в одном файле контроллера розрулить - создать приватных методов и возвращать нужный теплейт. Если логика показа нужного дашборда для роли достаточно сложная - вынести в отдельные классы для каждой роли
источник

AS

Alex Sin in Laravel UA
zVlad Nesquik
Привіт :)
Допоможіть в організації роутінга.
На сайті є 5 ролей. У сайбутньому буде додано ще 3 ролі.

Зараз у файлі Dashboard прописані функції для всих ролей (картинка)
Ну и роутінг у всих одинаковий (данні і функції, шаблони - різні)
Як би ви організували таке?
Мої варіанти:
1. Файли контролерів будуть лежати для кожного ролі користувача. Також і шаблони
2. В файлі Роутера прописати роутери для кожної ролі і файли контроллерів теж на кожну роль.
то есть вы под каждую роль выделяете папки и файлы, и пишите код
источник

AS

Alex Sin in Laravel UA
и если роль поменялась, или была удалена в новых требованиях, то вы пойдете переименовывать папки, удалять или изменять файлы
источник

AS

Alex Sin in Laravel UA
источник

zN

zVlad Nesquik in Laravel UA
Jeen
От сложности зависит. Если там все достаточно просто, можно все в одном файле контроллера розрулить - создать приватных методов и возвращать нужный теплейт. Если логика показа нужного дашборда для роли достаточно сложная - вынести в отдельные классы для каждой роли
Можно в одном файлі. Приватні методи. Але в такому випадку файл дуже великий і шось шукати в ньому не зручно.
Ось так реалізовано:

private function AdminDashboard(){}

private function TeacherDashboard(){}

private function ChildrenDashboard(){}

   public function dashboard(){
       $user = Auth::user();
       if($user->role_id == 1) return $this->AdminDashboard();
       elseif($user->role_id == 5) return $this->TeacherDashboard();
       elseif($user->role_id == 6) return $this->ChildrenDashboard();
       else return redirect()->route('user.firstProfile');
   }

Route::('/dashboard', ['Dashboard', 'dashboard' ])
источник

MR

Maxim Rebitskiy in Laravel UA
zVlad Nesquik
Можно в одном файлі. Приватні методи. Але в такому випадку файл дуже великий і шось шукати в ньому не зручно.
Ось так реалізовано:

private function AdminDashboard(){}

private function TeacherDashboard(){}

private function ChildrenDashboard(){}

   public function dashboard(){
       $user = Auth::user();
       if($user->role_id == 1) return $this->AdminDashboard();
       elseif($user->role_id == 5) return $this->TeacherDashboard();
       elseif($user->role_id == 6) return $this->ChildrenDashboard();
       else return redirect()->route('user.firstProfile');
   }

Route::('/dashboard', ['Dashboard', 'dashboard' ])
Дай вгадаю, клас називається Dashboard?)
источник

zN

zVlad Nesquik in Laravel UA
Alex Sin
то есть вы под каждую роль выделяете папки и файлы, и пишите код
Думаю робити так. Тому що ролів буде не багато.
Тільки тоді як у роутері? Теж, на кожну роль свої контролери підключати? Якось не то виходить.
источник

zN

zVlad Nesquik in Laravel UA
Maxim Rebitskiy
Дай вгадаю, клас називається Dashboard?)
Це приклад :)
источник

AS

Alex Sin in Laravel UA
zVlad Nesquik
Можно в одном файлі. Приватні методи. Але в такому випадку файл дуже великий і шось шукати в ньому не зручно.
Ось так реалізовано:

private function AdminDashboard(){}

private function TeacherDashboard(){}

private function ChildrenDashboard(){}

   public function dashboard(){
       $user = Auth::user();
       if($user->role_id == 1) return $this->AdminDashboard();
       elseif($user->role_id == 5) return $this->TeacherDashboard();
       elseif($user->role_id == 6) return $this->ChildrenDashboard();
       else return redirect()->route('user.firstProfile');
   }

Route::('/dashboard', ['Dashboard', 'dashboard' ])
не круто
источник

zN

zVlad Nesquik in Laravel UA
Alex Sin
и если роль поменялась, или была удалена в новых требованиях, то вы пойдете переименовывать папки, удалять или изменять файлы
Роль видалятися не буде! Це так як і Адмін. Він же не видаляється)) А якщо і потрібно буде щось, то міняється тільки ID. Так що все норм буде :)
источник

AS

Alex Sin in Laravel UA
мне кажется лучше будет так: в мидлваре перед дашбордом бери роль юзера, по ней резольв из какой-то карты конфига например - хендлер, его например в сессию можно написать, а в экшене звои хендлер, который обязтаельно должен быть в отдельном классе типо сервиса
источник

zN

zVlad Nesquik in Laravel UA
Alex Sin
мне кажется лучше будет так: в мидлваре перед дашбордом бери роль юзера, по ней резольв из какой-то карты конфига например - хендлер, его например в сессию можно написать, а в экшене звои хендлер, который обязтаельно должен быть в отдельном классе типо сервиса
Типо так?
Route::group(['middleware' => ['role:1' ], 'prefix' => 'admin' ], function(){
   Route::get('/', function(){
       return 'page admin';
   })->name('user.account-4');
});

Route::group(['middleware' => ['role:2' ], 'prefix' => 'director' ], function(){
   Route::get('/', function(){
       return 'page director';
   })->name('user.account-3');
});

Route::group(['middleware' => ['role:3' ], 'prefix' => 'moderator' ], function(){
   Route::get('/', function(){
       return 'page moderator';
   })->name('user.account-2');
});
источник

AS

Alex Sin in Laravel UA
Alex Sin
мне кажется лучше будет так: в мидлваре перед дашбордом бери роль юзера, по ней резольв из какой-то карты конфига например - хендлер, его например в сессию можно написать, а в экшене звои хендлер, который обязтаельно должен быть в отдельном классе типо сервиса
ото и весь твой экшен
источник

AS

Alex Sin in Laravel UA
zVlad Nesquik
Типо так?
Route::group(['middleware' => ['role:1' ], 'prefix' => 'admin' ], function(){
   Route::get('/', function(){
       return 'page admin';
   })->name('user.account-4');
});

Route::group(['middleware' => ['role:2' ], 'prefix' => 'director' ], function(){
   Route::get('/', function(){
       return 'page director';
   })->name('user.account-3');
});

Route::group(['middleware' => ['role:3' ], 'prefix' => 'moderator' ], function(){
   Route::get('/', function(){
       return 'page moderator';
   })->name('user.account-2');
});
нет, ни в коем случае
источник

AS

Alex Sin in Laravel UA
роут 1
источник

AS

Alex Sin in Laravel UA
вот эти приколы выкинь в разные классы например Фу1::admindshboard(), etc...
источник

AS

Alex Sin in Laravel UA
Alex Sin
ото и весь твой экшен
вот это хендлер
источник