在没有为其定义路由的情况下调用控制器方法

Invoking a controller method without having a route defined for it

我有几条路线,由于难以设置权限等原因不想添加另一条路线。我有一个控制器方法,它不会在任何路线上调用。有什么办法可以在我的 blade 模板中做到这一点?

我的控制器方法如下:

public static function editROA(){
//do stuff
}

在我的 blade 模板中,我想引用这个:

<a type='button' class='btn-warning' href="{{action('HomeController::editROA')}}">Edit</a>

然而,这会抛出一个错误,并表示没有名为 editROA 的方法。这个问题有解决办法吗?

由于您的路由不能超过 5 条,我建议您只使用一条通配符路由。所以你 运行 通配符上的 if else 来调用适当的方法。

Route::get('{uri?}',function($uri){
    if($uri == "/edit")
    {
        return app()->call('App\Http\Controllers\HomeController@editROA');
    }else if($uri == "something else"){
        return app()->call('App\Http\Controllers\SomeController@someMethod');
    }
    // add statements for other routes
});

查看

<a type='button' class='btn-warning' href="{{url('edit')}}">Edit</a>