我有一大堆Laravel 4包,它们提供了一些基本功能,比如向应用程序添加简单的内容管理页面,以及添加客户评价。
这些包包括迁移、模型、控制器、路由、样例视图和部分,这使得将它们添加到项目中变得非常快速和容易。
在我目前的项目中,我必须添加一个belongsTo关系从页面到推荐信,以显示特定页面上的相关推荐信,通过内容管理系统选择。
我已经创建了一个迁移来将字段添加到pages表中,在我的应用程序中扩展了pages包模型并添加了关系,并配置了CMS包配置文件以使用我的模型而不是包的模型。
我现在遇到的问题是,包控制器的show方法使用包的模型,而不是我的应用程序中扩展包模型的模型来呈现给定的slug的页面。
让package controller使用我的应用程序的模型而不是包中的模型,最好的方法是什么?
我想也许我可以更新包(因为它是我的),将命名空间模型文件的名称添加到包的配置文件中,然后在我的应用程序的配置文件版本中将其更改为我的应用程序的模型文件,并更新包控制器以查看配置文件,而不是硬编码包模型的名称?
也许我应该以某种方式使用IoC容器,但我不确定该如何操作?也许可以添加一个构造器,它希望将包模型的实例注入其中,但接下来如何让IoC容器注入我的应用程序的模型,而不是包的模型?有人有什么建议吗?
发布于 2014-01-10 19:56:53
我找出了它,并使用IoC容器完成了它。我如上所述更新了包控制器,以使用一个构造器,该构造器期望将包模型的实例注入其中,然后将以下内容添加到app/start/global.php的末尾:
App::bind('Fbf\LaravelPages\PagesController', function() {
return new Fbf\LaravelPages\PagesController(new Page);
});下面是我的应用程序/模型目录中的模型
<?php
class Page extends Fbf\LaravelPages\Page {
public function testimonial()
{
return $this->belongsTo('Fbf\LaravelTestimonials\Testimonial');
}
}https://stackoverflow.com/questions/21043370
复制相似问题