如何在方法返回视图的地方扩展Laravel类

如何在方法返回视图的地方扩展Laravel类,laravel,view,extends,Laravel,View,Extends,我不确定这是一个Laravel问题还是一个基本的PHP问题 我们有一个网站,是建立了许多微型网站。该功能在所有微站点上共享,实际上只是每个微站点的外观和感觉有所不同 在我们的结构中,我们有一个名为HierarchyController的控制器,每个微站点都使用它。正如您可能收集到的,这个控制器负责获取您当时正在查看的任何微站点的页面层次结构。控制器类似于以下内容 Class HierarchyController extends BaseController { public funct

我不确定这是一个Laravel问题还是一个基本的PHP问题

我们有一个网站,是建立了许多微型网站。该功能在所有微站点上共享,实际上只是每个微站点的外观和感觉有所不同

在我们的结构中,我们有一个名为HierarchyController的控制器,每个微站点都使用它。正如您可能收集到的,这个控制器负责获取您当时正在查看的任何微站点的页面层次结构。控制器类似于以下内容

Class HierarchyController extends BaseController
{
    public function index(Request $request)
    {
        ... do some stuff ...

        $page_data = [
            'something' => 'something_else',
        ];

        return view('common.pages.hierarchy', $page_data);
    }
}
到目前为止没有什么困难。但是现在我需要HierarchyController,以便只为少数微型站点包含它们自己的属性以及来自HierarchyController的属性。我想我可以创建一个特定于微站点的层次控制器,扩展上面的主控制器。比如:

Class MicrositeHierarchyController extends HierarchyController
{
    public function index(Request $request)
    {
        parent::index($request);

        $page_data = array_merge(--parent_page_data--, [
            'something1' => 'something_else_1',
        ]);

        return view('microsite.pages.hierarchy', $page_data);
    }
}
因为父HierarchyController返回一个视图而不是数组,所以我不确定如何从调用类获取$page_数据。这可能吗


谢谢

您可以捕获父控制器返回的视图,并对其数据执行合并

class MicrositeHierarchyController extends HierarchyController
{
    public function index(Request $request)
    {
        $view = parent::index($request);

        $page_data = array_merge($view->getData(), [
            'something1' => 'something_else_1',
        ]);

        return view('microsite.pages.hierarchy', $page_data);
    }
}

也许您可以将生成$page_数据的部分重构为父控制器中的方法,并在子控制器中调用该方法?或者重构index方法以接受父控制器中的第二个参数($page_数据)。虽然我有父控制器的源,但它由另一家公司管理。我可以很容易地改变它,但很有可能,他们会在某个时候更新他们的类,这会像一个符咒一样覆盖我的changesWorks。非常感谢。@typhon10np:)