如何为插件创建Html->链接

时间:2016-02-07 16:11:12

标签: php cakephp-3.0

我正在使用Cakedc Users插件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']) ?>来创建链接

那么我该如何解决这个问题?

小更新:我只想到使用旧的../ hack并且它有效

<?= $this->Html->link(__('FAQ'), ['controller'=>'../faqs']) ?>给了我想要的结果,但是如果有的话我仍然想要另一个解决方案

1 个答案:

答案 0 :(得分:1)

应通过应用程序模板

覆盖插件视图模板

你不应该插入插件源代码,你的更改将在下次更新时丢失!

检查插件和CakePHP文档,了解如何正确覆盖插件视图模板。

  

[...]

     

您可以使用特殊路径覆盖应用内部的任何插件视图。如果您有一个名为ContactManager的插件,则可以使用以下模板src/Template/Plugin/[Plugin]/[Controller]/[view].ctp创建文件,从而使用特定于应用程序的视图逻辑覆盖插件的模板文件。对于Contacts控制器,您可以创建以下文件:

src/Template/Plugin/ContactManager/Contacts/index.ctp
     

[...]

可以使用

之类的路径以相同的方式覆盖布局
src/Template/Plugin/[Plugin]/Layout/[layout].ctp

因此对于cakedc/users插件,可以通过

覆盖默认布局
src/Template/Plugin/Users/Layout/default.ctp

通过plugin选项

中断插件范围

如果您需要在插件范围内评估的代码来生成非插件网址,请使用plugin选项通过传递falsenull来突破。

<?= $this->Html->link(__('FAQ'), ['controller' => 'faqs', 'plugin' => false]) ?>