Я использую Laravel Framework в качестве бэкэнд-API и несколько блейд-файлов PHP для внешнего интерфейса, особенно для аутентификации и панели администратора из маршрута / admin.В / admin я отображаю список всех зарегистрированных пользователей и кнопки рядом с ними.(Эта страница видна только пользователям, чье значение в столбце «Администратор» установлено в значение «истина»).Я хочу переключать статус администратора пользователя, продвигая или понижая его, нажав кнопку рядом с именем пользователя.Для этого я попытался использовать форму отправки с методом get.У меня есть метод, определенный внутри UserController, как это:
public function setAdmin($id) {
$user = User::find($id);
$user->admin = !$user->admin;
if($user->save()) {
echo "Changed";
}
else {
echo "Could not be changed";
}
}
Я хочу вызвать этот метод из представления по нажатию кнопки.
Я пытался использовать форму для отправки запросауказав действие, но оно дало ошибку, сказав, что переданные значения меньше ожидаемого количества параметров.
{!! Form::open(['action' => ['UserController@setAdmin', $user->id], 'method' => 'POST']) !!}
{{ Form::submit('Submit', ['class' => 'btn btn-primary']) }}
{!! Form::close() !!}
У меня есть маршрут, явно настроенный для вызова этого действия
Route::post('/admin/users/setAdmin', 'UserController@setAdmin')
Хотя я не уверен, должен ли я задавать явный маршрут для этого действия или можно ли вызывать функцию контроллера непосредственно из представления без определения маршрута.
Я перебрал модель пользователя для отображениявсе пользователи:
@if(count($users) > 0)
@foreach($users as $user)
<div class="card">
{{ $user }}
</div>
{!! Form::open(['action' => ['UserController@setAdmin', $user->id], 'method' => 'POST']) !!}
{{ Form::submit('Submit', ['class' => 'btn btn-primary']) }}
{!! Form::close() !!}
@endforeach
@else
<h2>No users found!</h2>
@endif
РЕДАКТИРОВАТЬ : Добавлен раздел foreach файла blade-файла.Также я изменил часть 'action' параметров Form :: open (), это был опечатка, ошибка параметров все еще там.
Может кто-нибудь объяснить, как это можно сделать?