您好,我有一个称为停用功能的控制器功能,如果我单击按钮,它应该具有以下功能:
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');
我不知道我做错了什么?因为我一直都以同样的方式做
这是我的表格用户:
答案 0 :(得分:0)
尝试使用:
public function deactivate($id)
{
$user = User::find($id);
$user->verified = false;
$user->save();
return redirect('/adminmodul')->with('success', 'Nutzer wurde erfolgreich deaktiviert');
}
答案 1 :(得分:0)
您需要在分配值后保存
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');
答案 2 :(得分:0)
检查ID是否在控制器中实际收到。进行dd($ id)检查控制器功能是否已接收到ID。
public function deactivate($id)
{
dd($id)
//rest of your code
}
答案 3 :(得分:0)
您需要确保您的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}
创建一条路由。这可能与您创建的路线冲突。看看here了解更多信息。
因此,您应该在声明resource
路由之前放置创建的路由,否则可以更改URL以避免冲突:
Route::put('/adminmodul/deactivate/{id}', 'AdminController@deactivate')->name('adminmodul.deactivate');