到控制器中自定义函数的Laravel路由不起作用


Laravel route to custom function in controller does not work

laravel 5.3

我试图使一个按钮或链接执行激活函数在AdminController,虽然每当我点击按钮它给我404页说它找不到AdminController@activate。

当我从函数中使用dd()时,它不做任何事情。

如果你需要任何其他信息,请告诉我,我不是一个旅游专家:-)

管理中间件

use Closure;
use Illuminate'Support'Facades'Auth;
class admin
{
    /**
    * Handle an incoming request.
    *
    * @param  'Illuminate'Http'Request  $request
    * @param  'Closure  $next
    * @return mixed
    */
   public function handle($request, Closure $next)
   {
       if (Auth::check() && Auth::user()->level == 2)
       {
           return $next($request);
       }
       return abort(401, 'Unauthorized');
   }
}

Web路径

Route::group(['middleware' => ['auth.admin']], function() {
    Route::resource('admin', 'AdminController');
    Route::get('/admin/{id}/delete', 'AdminController@delete');
    Route::get('/admin/activate', 'AdminController@activate');
});

AdminController

namespace App'Http'Controllers;
use Illuminate'Http'Request;
use App'User;
use App'Http'Requests;
use App'Http'Controllers'Controller;
use Illuminate'Support'Facades'Hash;
class AdminController extends Controller
{       
    public function activate(){
       $users = User::where('active', 0)->get();
       $users->active = 1;
       $users->timestamps = false;
       $users->update();
       $users->timestamps = true;
       return redirect('admin');
   }
}

HTML/叶片

<a href="{{ url('/admin/activate') }}"><span class="glyphicon glyphicon-cog" aria-hidden="true">Activate all</span></a> <br>
    @foreach ($data['inactiveusers'] as $user)
        {{$user->firstname}} {{$user->surname}}
        <a href="{{ url('/admin/' . $user->id .'/edit') }}"><span class="glyphicon glyphicon-cog" aria-hidden="true"></span></a>
        <a href="{{ url('/admin/' . $user->id .'/delete') }}"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></a>
        <br>
    @endforeach

laravel中间件不允许未经身份验证的用户访问受保护的url。

确保用户对您请求的url进行了身份验证

提示:

将/admin/activate移出中间件并尝试直接访问。它应该可以工作

最坏的Hack:

您可以在Kernal.php中的middlewareGroups禁用此功能,但不建议这样做。