Функция контроллера Laravel показывает успех, но не работает

Привет, у меня есть функция контроллера, называемая деактивацией, если я нажму на кнопку, она должна выполнить эту функцию:

public function deactivate($id)
    {
        $user = User::find($id);
        $user->verified = false;
        $user->save();
        return redirect('/adminmodul')->with('success', 'Nutzer wurde erfolgreich deaktiviert');
    }

и на мой взгляд кнопка выглядит так:

<td><a href = "{{ route('adminmodul.deactivate',$user->id)}}" class = "btn btn-primary"><i class = "fas fa-eye"></i></a></td>

и это мой маршрут:

Route::patch('/adminmodul/{id}',[
    'as' => 'adminmodul.deactivate',
    'uses' => 'AdminController@deactivate'
]);

каждый раз, когда я нажимаю на кнопку, я получаю сообщение об успехе, но ничего не происходит, и я не знаю, почему

я могу показать вам мой полный контроллер:

<?php

namespace App\Http\Controllers;
use App\User;
use App\Angebot;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;

class AdminController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {

    $angebote = DB::table('angebots')->first();
    $users = DB::table('users')->get();
    return view('adminmodul.index', compact('users', 'angebote'))
        ->with('i', (request()->input('page', 1) - 1) * 5);
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view('adminmodul.create');
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
    //
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    $user = User::find($id);

    return view('adminmodul.edit', compact('user'));
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    $request->validate([
        'name'=>'required',

    ]);
    $user = User::find($id);
    $user->name = $request->get('name');
    $user->save();
    return redirect('/adminmodul')->with('success', 'Benutzer wurde geändert');
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    $user = User::find($id);
    $angebot = Angebot::where('firma', $id);
    $angebot->delete();
    $user->delete();

    return redirect('/adminmodul')->with('success', 'Nutzer wurde erfolgreich gelöscht');
}


public function deactivate($id)
{

    $user = User::find($id);
    $user->verified = false;
    $user->save();

   return redirect('/adminmodul')->with('success', 'Nutzer wurde erfolgreich deaktiviert');
}
}

и мои маршруты:

Route::resource('/adminmodul', 'AdminController');
Route::get('/adminmodul/{id}', 'AdminController@deactivate')->name('adminmodul.deactivate');

я не знаю что я делаю не так?? потому что я делаю это так же все время

это мой пользователь таблицы:

Функция контроллера Laravel показывает успех, но не работает

какой тип данных проверен?

PHP Geek 02.04.2019 08:07

тип логический

MonaMuhr 02.04.2019 08:13

напечатайте $user после сохранения данных, что вы получите

PHP Geek 02.04.2019 08:16

Как я могу это сделать?

MonaMuhr 02.04.2019 08:26

убедитесь, что ваш $user->id не равен нулю.

Piazzi 04.04.2019 14:52

поместите dd($id) в свою функцию и покажите нам, что вы получаете

Piazzi 04.04.2019 14:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
6
238
4

Ответы 4

Попробуйте использовать:

public function deactivate($id)
{
    $user = User::find($id);
    $user->verified = false;
    $user->save();
    return redirect('/adminmodul')->with('success', 'Nutzer wurde erfolgreich deaktiviert');
}

Вам нужно сохранить после присвоения значения,

public function deactivate($id)
    {
        $user = User::find($id);
        $user->verified = false;
        $user->save();  // add this line 
        return redirect('/adminmodul')->with('success', 'Nutzer wurde erfolgreich deaktiviert');
    }

Обновите свои маршруты, как показано ниже,

Route::get('/adminmodul/{id}', 'AdminController@deactivate')->name('adminmodul.deactivate');

Route::resource('/adminmodul', 'AdminController');

Вы проверили, что ваш маршрут действительно соответствует вашему методу?

Md.Sukel Ali 02.04.2019 12:52

да или? Route::patch('/adminmodul/{id}',[ 'as' => 'adminmodul.deactivate', 'uses' => 'AdminController@deactivate' ]);

MonaMuhr 02.04.2019 15:46

Почему вы используете запрос на исправление вместо запроса на получение? Измените патч маршрута, чтобы получить и посмотреть, что произойдет.

Md.Sukel Ali 03.04.2019 06:23

все такой же :/

MonaMuhr 03.04.2019 12:06

Если ваши маршруты соответствуют вашему методу, он должен работать. Убедитесь, что ваши маршруты попали в метод с помощью dd('hit') или что-то в этом роде.

Md.Sukel Ali 03.04.2019 12:10

Можете ли вы загрузить свои полные маршруты?

Md.Sukel Ali 03.04.2019 12:18

да: Route::resource('/adminmodul', 'AdminController'); Route::get('/adminmodul/{id}', 'AdminController@deactivate')->name('adminmodul.deactivate')‌​;

MonaMuhr 04.04.2019 13:31

я изменил свой пост, может быть, это поможет вам

MonaMuhr 04.04.2019 13:38

Проверьте, действительно ли идентификатор получен в контроллере. Выполните команду dd($id), чтобы проверить, получила ли функция контроллера идентификатор или нет.

public function deactivate($id)
{
    dd($id)
    //rest of your code
}

Вам нужно убедиться, что ваш id не равен нулю, используйте метод findOrFail():

public function deactivate($id)
{
    $user = User::findOrFail($id);
    $user->verified = false;
    $user->save();

   return redirect('/adminmodul')->with('success', 'Nutzer wurde erfolgreich deaktiviert');
}

Измените маршрут на put:

Route::put('/adminmodul/{id}', 'AdminController@deactivate')->name('adminmodul.deactivate');

Вы должны поместить этот маршрут до в маршрут resource:

Route::put('/adminmodul/{id}', 'AdminController@deactivate')->name('adminmodul.deactivate');
Route::resource('/adminmodul', 'AdminController');

Когда вы используете маршруты resource, laravel создает маршрут для этого URL /adminmodul/{id}. Это может противоречить созданному вами маршруту. Посмотрите здесь для получения дополнительной информации.

Таким образом, вы должны поместить созданный вами маршрут до того, как объявили маршрут resource, или вы можете изменить URL-адрес, чтобы избежать конфликта:

Route::put('/adminmodul/deactivate/{id}', 'AdminController@deactivate')->name('adminmodul.deactivate');

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