首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在app中扩展Laravel包模型,并让包控制器使用它们而不是包模型

在app中扩展Laravel包模型,并让包控制器使用它们而不是包模型
EN

Stack Overflow用户
提问于 2014-01-10 19:38:03
回答 1查看 1K关注 0票数 1

我有一大堆Laravel 4包,它们提供了一些基本功能,比如向应用程序添加简单的内容管理页面,以及添加客户评价。

这些包包括迁移、模型、控制器、路由、样例视图和部分,这使得将它们添加到项目中变得非常快速和容易。

在我目前的项目中,我必须添加一个belongsTo关系从页面到推荐信,以显示特定页面上的相关推荐信,通过内容管理系统选择。

我已经创建了一个迁移来将字段添加到pages表中,在我的应用程序中扩展了pages包模型并添加了关系,并配置了CMS包配置文件以使用我的模型而不是包的模型。

我现在遇到的问题是,包控制器的show方法使用包的模型,而不是我的应用程序中扩展包模型的模型来呈现给定的slug的页面。

package controller使用我的应用程序的模型而不是包中的模型,最好的方法是什么?

我想也许我可以更新包(因为它是我的),将命名空间模型文件的名称添加到包的配置文件中,然后在我的应用程序的配置文件版本中将其更改为我的应用程序的模型文件,并更新包控制器以查看配置文件,而不是硬编码包模型的名称?

也许我应该以某种方式使用IoC容器,但我不确定该如何操作?也许可以添加一个构造器,它希望将包模型的实例注入其中,但接下来如何让IoC容器注入我的应用程序的模型,而不是包的模型?有人有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2014-01-10 19:56:53

我找出了它,并使用IoC容器完成了它。我如上所述更新了包控制器,以使用一个构造器,该构造器期望将包模型的实例注入其中,然后将以下内容添加到app/start/global.php的末尾:

代码语言:javascript
复制
App::bind('Fbf\LaravelPages\PagesController', function() {
    return new Fbf\LaravelPages\PagesController(new Page);
});

下面是我的应用程序/模型目录中的模型

代码语言:javascript
复制
<?php

class Page extends Fbf\LaravelPages\Page {

    public function testimonial()
    {
        return $this->belongsTo('Fbf\LaravelTestimonials\Testimonial');
    }

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21043370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档