Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 4 在应用程序中扩展Laravel包模型,并让包控制器使用它们而不是包模型_Laravel 4 - Fatal编程技术网

Laravel 4 在应用程序中扩展Laravel包模型,并让包控制器使用它们而不是包模型

Laravel 4 在应用程序中扩展Laravel包模型,并让包控制器使用它们而不是包模型,laravel-4,Laravel 4,我有一整套Laravel 4软件包,它们提供了一些基本功能,比如向应用程序添加简单的内容管理页面,以及添加客户推荐信 这些包包括迁移、模型、控制器、路由和示例视图以及部分,使将它们添加到项目中变得非常快速和简单 在我当前的项目中,我必须添加一个从页面到推荐的belongsTo关系,以便在特定页面上显示通过CMS选择的相关推荐 我创建了一个迁移,将该字段添加到pages表中,在我的应用程序中扩展了pages包模型并添加了关系,并将CMS包配置文件配置为使用我的模型而不是包的模型 但我现在遇到的问题

我有一整套Laravel 4软件包,它们提供了一些基本功能,比如向应用程序添加简单的内容管理页面,以及添加客户推荐信

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

在我当前的项目中,我必须添加一个从页面到推荐的belongsTo关系,以便在特定页面上显示通过CMS选择的相关推荐

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

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

让用户使用我的应用程序模型而不是软件包中的模型的最佳方法是什么

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


或者我应该使用IoC容器,但我不知道该怎么做?可能会添加一个构造函数,该构造函数期望将包模型的实例注入其中,但是如何让IoC容器注入我的应用程序的模型而不是包的模型呢?有人有什么建议吗?

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

App::bind('Fbf\LaravelPages\PagesController', function() {
    return new Fbf\LaravelPages\PagesController(new Page);
});
这是我的app/models目录中的模型

<?php

class Page extends Fbf\LaravelPages\Page {

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

}