如何扩展Laravelclass方法所在的returns一个视图
How to extend Laravel class where the method returns a view
我不确定这是 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 的属性。我想我可以创建一个特定于微型站点的 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 returns 是一个视图而不是数组,所以我不确定如何从调用 class 到达 $page_data。这可能吗?
谢谢
您可以捕获父控制器返回的视图并与其数据执行合并。
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);
}
}
我不确定这是 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 的属性。我想我可以创建一个特定于微型站点的 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 returns 是一个视图而不是数组,所以我不确定如何从调用 class 到达 $page_data。这可能吗?
谢谢
您可以捕获父控制器返回的视图并与其数据执行合并。
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);
}
}