取消设置路由器:: extensions()

时间:2017-10-30 07:33:38

标签: excel cakephp

我正在使用dakota's CakePHP Excel插件在我的应用中生成Excel页面。我也有一个地方,我试图在我的应用程序中显示xlsx / xls文档。问题是,这一行导致应用程序在我的模板中查找和xlsx目录。

Router::extensions('xlsx');

我可以删除该行,只需将其添加到我需要它的控制器中,但这意味着每次需要添加此功能时我都需要更新控制器,而我知道肯定只有一个地方它将不会被使用。

如何在这一个实例中删除路由器扩展?

我已尝试在我需要的操作的顶部执行所有这些操作:

Router::extension('', false);
Router::extension(null, false);
Router::extension([], false);

这些都不起作用。还有另一种方式吗?

2 个答案:

答案 0 :(得分:1)

如果您不希望应用此功能,那么我建议您不要首先加载插件路由,即在routes调用Plugin::load()中设置false选项1}}(或根本不指定routes选项,因为默认为false):

Plugin::load('CakeExcel', ['bootstrap' => true, 'routes' => false]);

然后,您可以将自己的路由配置中的扩展名仅应用于您实际需要的路由。

此外,如果您确实需要删除全局扩展,则可以使用Router::extensions()的第二个参数来分别禁用合并以启用覆盖。

$extensions = Router::extensions();
$extensions = array_diff($extensions, ['xslx']);
Router::extensions($extensions, false);

但这只适用于在正确的时间应用,即在路由配置中 Plugin::routes();调用之后的,这可能会有问题,因为其他插件路由可以接收扩展之前,您可以删除它们,因此您最好不要首先加载有问题的路由配置。

另见

答案 1 :(得分:0)

您可以使用setExtensionshttps://book.cakephp.org/3.0/en/development/routing.html#routing-file-extensions

  

这将为所有正在进行的路由启用命名扩展   在setExtensions()调用之后连接在该范围内,包括   那些在嵌套范围内连接的文件