我正在使用dakota's CakePHP Excel插件在我的应用中生成Excel页面。我也有一个地方,我试图在我的应用程序中显示xlsx / xls文档。问题是,这一行导致应用程序在我的模板中查找和xlsx
目录。
Router::extensions('xlsx');
我可以删除该行,只需将其添加到我需要它的控制器中,但这意味着每次需要添加此功能时我都需要更新控制器,而我知道肯定只有一个地方它将不会被使用。
如何在这一个实例中删除路由器扩展?
我已尝试在我需要的操作的顶部执行所有这些操作:
Router::extension('', false);
Router::extension(null, false);
Router::extension([], false);
这些都不起作用。还有另一种方式吗?
答案 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)
您可以使用setExtensions
:https://book.cakephp.org/3.0/en/development/routing.html#routing-file-extensions
这将为所有正在进行的路由启用命名扩展 在setExtensions()调用之后连接在该范围内,包括 那些在嵌套范围内连接的文件