Laravel Маршрутизация нескольких параметров - PullRequest
0 голосов
/ 16 февраля 2020

Я недавно начал использовать фреймворк Laravel в качестве бэкэнда для моего нового проекта. Для внешнего интерфейса я использую Angular 8+. Обе области все еще относительно новы для меня, и в настоящее время я работаю над маршрутизацией API и нуждаюсь в вашем совете.

У меня есть таблица пользователей, где я храню несколько пользовательских настроек. Я хотел бы обновить их соответственно. В основном это булевы значения. Теперь у меня есть UserController. При этом я хочу обрабатывать запросы PUT.

Теперь к моему вопросу: как настроить маршрутизацию, если я хочу обновить настройки пользователя при различных действиях (например, обновление Action1 View1 + View2 или обновление Action2 View3)? Должен ли я обрабатывать все это в одной функции или в нескольких функциях контроллера? Если есть несколько функций, как должна выглядеть маршрутизация?

Несколько маршрутов и функция, подобная этой?

Route::middleware('api')->get('/user/{userid}', 'UserController@show');
Route::middleware('api')->put('/user/{userid}/updateViewAction1', 'UserController@updateViewAction1');
Route::middleware('api')->put('/user/{userid}/updateViewAction2', 'UserController@updateViewAction2');

или

Если операторы внутри моей функции, но как обновить только данные из запроса? Angular передает истину / ложь из, поэтому я проверяю, если для истины, и устанавливаю значение в 1.

public function updateView($userId, Request $request)
{
   if($request->query('view1') == "true"){ $view1 = 1; } else {$view1 = 0;}
   if($request->query('view2 ') == "true"){ $view2 = 1; } else {$view2  = 0;}
   $query = \DB::table('users')
             ->where('userId', '=', $userId)
             ->update(
                  ['view1' => $view1,
                  'view2 ' => $view2 );
}

Кажется, это не правильно, но я не могу думать ни о чем другом. На этом этапе аутентификация не рассматривается. Поскольку в будущем будет более 20 настроек, я ищу эффективное решение.

1 Ответ

0 голосов
/ 16 февраля 2020

В контроллере вы включаете запрос Request $ в качестве первого аргумента, а не второй

public function updateView(Request $request, $userID)...
// Or
public function updateView(Request $request, User $userid)...

Вы не обязаны использовать метод ::put, вы можете использовать ::post

...