Pee*_*eer 4 overriding controller laravel
因为 Laravel Nova 全局搜索忽略策略,所以我想覆盖它的控制器。不知怎的,这不起作用,全局搜索默认为Laravel\Nova\Http\Controllers\SearchController.
到目前为止我所拥有的:
app/config.php
//..
'providers' => [
//..
App\Providers\RouteServiceProvider::class,
App\Providers\NovaServiceProvider::class,
//..
],
Run Code Online (Sandbox Code Playgroud)
(请注意提供者的顺序)
routes/web.php
//..
Route::get('nova-api/search', 'SearchController@index');
Run Code Online (Sandbox Code Playgroud)
app/Http/Controllers/SearchController.php
namespace App\Http\Controllers;
use Laravel\Nova\Nova;
use Laravel\Nova\GlobalSearch;
use Laravel\Nova\Http\Requests\NovaRequest;
use Laravel\Nova\Http\Controllers\SearchController as NovaSearchController;
class SearchController extends NovaSearchController
{
/**
* Get the global search results for the given query.
*
* @param \Laravel\Nova\Http\Requests\NovaRequest $request
* @return \Illuminate\Http\Response
*/
public function index(NovaRequest $request)
{
return (new GlobalSearch(
$request, Nova::globallySearchableResources($request)
))->get();
}
}
Run Code Online (Sandbox Code Playgroud)
版本
这是行不通的。路线nova-api/search仍指向Laravel\Nova\Http\Controllers\SearchController。我究竟做错了什么?
小智 6
我遇到了同样的问题,这就是我解决的方法。
在AppServiceProvider.php中的boot方法中添加以下代码:
$this->app->bind(
NovaController::class,
YourController::class
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2486 次 |
| 最近记录: |