我如何解决在构建[App \ Http \ Controllers \ Member \ NewsController]时无法实例化目标[App \ Repositories \ NewsRepository]的问题. [英] How can I solve Target [App\Repositories\NewsRepository] is not instantiable while building [App\Http\Controllers\Member\NewsController].?
问题描述
我的控制器是这样的:
...
use App\Repositories\NewsRepository;
class NewsController extends Controller
{
protected $repository;
public function __construct(NewsRepository $repository)
{
$this->repository = $repository;
}
public function store(NewsCreateRequest $request)
{
...
$news = $this->repository->create($input);
...
}
}
我的界面是这样的:
namespace App\Repositories;
use Prettus\Repository\Contracts\RepositoryInterface;
interface NewsRepository extends RepositoryInterface
{
//
}
我的班级是这样的:
...
use App\Repositories\NewsRepository;
class NewsRepositoryEloquent extends BaseRepository implements NewsRepository
{
public function model()
{
return News::class;
}
public function boot()
{
$this->pushCriteria(app(RequestCriteria::class));
}
}
我的存储库服务提供者是这样的:
My repository service provider like this :
...
class RepositoryServiceProvider extends ServiceProvider
{
...
public function register()
{
...
$this->app->bind(\App\Repositories\NewsRepository::class, \App\Repositories\NewsRepositoryEloquent::class);
}
}
如果执行了控制器上的方法存储,则存在错误:
If the method store on the controller executed, there exist error :
(1/1)BindingResolutionException目标[App \ Repositories \ NewsRepository]在构建时无法实例化[App \ Http \ Controllers \ Member \ NewsRepository].
(1/1) BindingResolutionException Target [App\Repositories\NewsRepository] is not instantiable while building [App\Http\Controllers\Member\NewsRepository].
如何解决该错误?
推荐答案
您必须将构造函数添加到存储库中,并为安装模型调用父构造函数,如下所示:
You have to add constructor to your repository and call parent constructor for setup model like this:
public function __construct(Permission $model)
{
parent::__construct($model);
}
这篇关于我如何解决在构建[App \ Http \ Controllers \ Member \ NewsController]时无法实例化目标[App \ Repositories \ NewsRepository]的问题.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!