我使用php artisan make:controller newsController --resource
之后当我在功能index
中转到我的控制器时,我想添加Request $request
public function index(Request $request)
{
}
返回错误:
宣言 应用程序\ HTTP \控制器\管理\ NewsController ::指数(照亮\ HTTP \请求 $ request)应该兼容 应用\ HTTP \控制器\控制器::指数()
如何解决?我尝试了很多方法,但它仍然没有用!
编辑 - 控制器
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
更新 - 路线
Route::post('admin/news', 'Admin\NewsController@store');
Route::resource('admin/news', 'Admin\NewsController');
答案 0 :(得分:2)
这不需要任何Laravel解决方法。
<强>修正:强>
a)从基本控制器中删除index
方法
或
b)使基本控制器中的index
方法将Illuminate\Http\Request
作为参数,并在每个控制器的index
方法中使用相同的方法签名继承自整个应用程序的基础。
或
c)弄清楚为什么首先在基础中定义了index
方法,如果需要,将其移动到要在子类中使用的特征。 (允许你完全覆盖方法)
b 不是一个好的选择,只是为了说明一点
问题证明:
class Foo
{
public function index()
{
//
}
}
class Bar extends Foo
{
public function index(\Illuminate\Http\Request $request)
{
}
}
Bar :: index(Illuminate \ Http \ Request $ request)声明应与Foo :: index()
兼容
答案 1 :(得分:1)
It's quite simple, just create your Resource controller
without the index route Or Create new get route, like this:
Route::resource('admin/news', 'Admin\NewsController', ['except' => ['index']]);
Then add your route before the resource declaration, something like this:
Route::post('admin/news', 'Admin\NewsController@index');
Route::resource('admin/news', 'Admin\NewsController', ['except' => ['index']]);
Hope this helps you!!
答案 2 :(得分:1)
您要覆盖temp.variable_you_just_made=state.api_url+'/users'
操作。
您还希望将参数传递到此index
操作中。
index
没有参数。
因此它们不“兼容”。
尝试这种“帮助功能”方法:
App\Http\Controllers\Controller::index()
答案 3 :(得分:0)
您可以从资源中禁用index
,并在资源之前或之后使用不同的方法名称定义路由:
Route::get('resources', 'ResourceController@getResources');
Route::resource('resources', 'ResourceController', $restResource)->except(['index']);