Как обновить статус пользователя с помощью кнопки без обновления всех параметров в laravel

я хочу обновить статус пользователя, просто передайте параметр «статус». это мой код, но я не знаю, почему я не могу обновить статус пользователя. как исправить эту проблему?

мой контроллер

public function activation()
{
    // dd('test');
    $action = Input::get('status');
    if (Input::get('activate'))
    {
        $this->activateUser($action);
    }
    elseif (Input::get('inactivate'))
    {
        $this->deactivateUser($action);
    }
    return redirect(route('admins-users.index'))->with('message-post', 'Status was updated successfully');
}

public function activateUser($user)
{
    //dd('active');
    User::findOrNew($user)->update(['status' => "1"]);
}

public function deactivateUser($user)
{
    // dd('nonactive');
    User::findOrNew($user)->update(['status' => "0"]);
}

мой маршрут

Route::post('admins-users/status', 'Backend\StatusController@activation');

мой вид

{!! Form::open(array('url' => 'admins-users/status')) !!}
       @if ($user->status)
          {!! Form::submit('inactivate', ['name' => 'inactivate', 'class'=>'btn btn-xs btn-default']) !!}
       @else
          {!! Form::submit('Activate', ['name' => 'activate', 'class'=>'btn btn-xs btn-success']) !!}
       @endif
{!! Form::close() !!}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
1 120
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуйте с этим

  {!! Form::open(['url' => 'admins-users/status', 'method' => 'get' !!}
   <input type = "hidden" name = "user_id" value = "{{ $user->id }}">
   @if ($user->status)
      {!! Form::submit('inactivate', ['name' => 'inactivate', 'class'=>'btn btn-xs btn-default']) !!}
   @else
      {!! Form::submit('Activate', ['name' => 'activate', 'class'=>'btn btn-xs btn-success']) !!}
   @endif
  {!! Form::close() !!}

Ваш маршрут

Route::get('admins-users/status', 'Backend\StatusController@activation');

Ваш метод контроллера

public function activation(Request $request)
{
     $user_id = $request->user_id
     if ($request->acticate) {
           $this->activateUser($user_id);
     }
     elseif ($request->inactiavte) {
           $this->deactivateUser($user_id);
     }
return redirect(route('admins-users.index'))->with('message-post', 'Status was updated successfully');
}

Надеюсь это поможет :)

но в вашем маршруте вы указали метод публикации. Если вы хотите изменить его на get, вам также нужно изменить метод маршрута, например Route::get('..', '...');

Maulik Shah 09.04.2019 14:57

проблема в том, как получить идентификатор пользователя и активировать его.

Ilham Firman Ashari 09.04.2019 14:58

все еще не работает, потому что вы не передаете значение статуса и идентификатора пользователя при использовании методов activUser и deactiveUser.

Ilham Firman Ashari 10.04.2019 08:21

до сих пор не работает. почему вы используете $request->activate. вы не передаете его в представлениях

Ilham Firman Ashari 10.04.2019 08:34

В кнопке вы назвали активировать/деактивировать, поэтому, если какая-либо кнопка нажата, ее значение будет установлено, а затем в контроллере мы просто должны проверить, какое значение кнопки установлено/нажато.

Maulik Shah 10.04.2019 08:40
Ответ принят как подходящий

Попробовав несколько способов. наконец, я нашел ответ на эту проблему, используя Ajax и опцию выбора. я добавляю хэш-идентификатор перед передачей в контроллер и снова декодирую в контроллере. Я думаю, что id должен беспокоиться об этом пропуске.

мой контроллер

public function control(Request $request){
    $status = $request->status;
    $iduser = $request->iduser;
    $key = Hashids::connection('main')->decode($iduser)[0] ??  abort(404);
    $update = User::where('id', $key)->update(['status'=> $status]);
    if ($update)
    {
        return redirect(route('admins-users.index'))->with('message-post', 'Status user was updated successfully');
    }
}

моя форма использование хэш-идентификатора для кодирования идентификатора пользователя

 @php $parameter = Hashids::connection('main')->encode($user->id); @endphp
{!! Form::hidden(null,$parameter, ['id'=> 'iduser'.$parameter ])!!}
{!! Form::select(
                'status',
                array(1=>'Active',0=>'Not Active'),
                $user->exists ? $user->status : null,
                [
                    'id'          => 'action'.$parameter,
                    'placeholder' => 'Choose a status'
                ]
            )
!!}

сценарий

$(document).ready(function(){

    @foreach($users as $user)
    @php $parameter = Hashids::connection('main')->encode($user->id); @endphp
    $("#action{{ $parameter }}").change(function(){
        var status = $("#action{{ $parameter }}").val();
        var iduser = $("#iduser{{ $parameter }}").val();
        if (status= = ""){
            alert("Please select an option");
        }
        else{
            if (confirm('Do you want to change {{ $user->name }} status to {{ $user->status ? 'InActive' : 'Active' }}?')) {
                $.ajax({
                url: '{{ url("/action") }}',
                data: 'status=' + status + '&iduser=' + iduser,
                type: 'get',
                success:function(response){
                    console.info(response);
                }
                });
                document.location.reload();
            }
        }
    });
    @endforeach
});

Другие вопросы по теме