我正在使用 Cakedc 用户插件 https://github.com/CakeDC/users 这对我非常好
但是我有一个问题,这个插件的默认布局位于APP_ROOT'vendor'cakedc'users'src'Template'Layout
但是我的应用的默认布局位于APP_ROOT'src'Template'Layout
我不认为这是一个大问题我只是将默认布局从我的src文件夹复制到插件文件夹,但我的问题是他们指向我网站的链接
EXAMPLE.COM/FAQ
转换为EXAMPLE.COM/USERS/FAQ
我正在使用<?= $this->Html->link(__('FAQ'), ['controller'=>'faqs']) ?>
来创建链接
那么我该如何解决这个问题呢?
小更新:我只是想使用旧的../黑客和它工作
<?= $this->Html->link(__('FAQ'), ['controller'=>'../faqs']) ?>
给了我想要的结果,但是如果有的话,我还是想要另一个解决方案
视图模板应通过应用程序模板覆盖
您不应该摆弄插件源代码,您的更改将在下一次更新中丢失!
查看插件和 CakePHP 文档,了解如何正确覆盖插件视图模板。
[...]
您可以使用特殊路径从应用程序内部覆盖任何插件视图。如果您有一个名为
ContactManager
的插件,则可以使用以下模板src/Template/Plugin/[Plugin]/[Controller]/[view].ctp
创建文件,从而使用特定于应用程序的视图逻辑覆盖插件的模板文件。对于联系人控制器,您可以创建以下文件:src/Template/Plugin/ContactManager/Contacts/index.ctp
[...]
https://github.com/CakeDC/users/blob/3.1.4/Docs/Documentation/Extending-the-Plugin.md#updating-the-templates
说明书>插件>从应用程序内部覆盖插件模板
布局可以通过使用类似路径以相同的方式覆盖
src/Template/Plugin/[Plugin]/Layout/[layout].ctp
因此,对于cakedc/users
插件,默认布局可以通过以下方式覆盖
src/Template/Plugin/Users/Layout/default.ctp
通过plugin
选项突破插件范围
如果需要在插件范围内计算的代码来生成非插件 URL,请使用 plugin
选项通过传递 false
或 null
来突破。
<?= $this->Html->link(__('FAQ'), ['controller' => 'faqs', 'plugin' => false]) ?>