如何防止链接自动显示在模板ctp文件中?
我给你举个例子:
允许用户(id= 1)查看teamcalendars/view/1用户(id= 2)不允许查看teamcalendars/view/1。
User1是团队1的成员,应该看到并遵循链接。User2不是任何团队的成员,也不应该看到日历的链接,也不应该遵循它。但我想将链接放在team /index文件中,两个用户都可以访问并查看所有团队,但每个团队具有不同的选项。
如果User2跟踪该链接(或手动将其键入浏览器),控制器将返回重定向和有关缺少权限的错误消息。无论如何,User2永远不会实现这一目标。但我如何防止蛋糕显示User2的链接(误导性的)?
有没有可能将链接连接到控制器和操作,以及它所指向的对象的id,这样我就不需要为每个视图构建和传递变量来决定可以显示哪些链接?
很抱歉没有提供任何代码,但是我想任何人都知道如何从Controller发送数组到View,以及如何使用if(){echo $this->Html->link()}验证它,这就是我目前正在做的事情。
提前感谢您的帮助或意见。
发布于 2015-08-19 09:27:04
一种选择是定义您自己的HtmlHelper并覆盖链接函数,以便它首先检查链接上的权限,只有在允许访问时才输出它。类似于以下内容:
namespace App\View\Helper;
use \Cake\View\Helper\HtmlHelper;
// Or, if you're already using a third-party HTML helper, something like
// use BootstrapUI\View\Helper\HtmlHelper as HtmlHelper;
class MyHtmlHelper extends HtmlHelper
{
function link($title, $url = null, array $options = [])
{
if (checkMyPermissions($url)) {
return parent::link($title, $url, $options);
}
}
}然后在你的AppController中:
use App\View\Helper\MyHtmlHelper;
public $helpers = [
'Html' => ['className' => 'MyHtmlHelper'],
// ... and all your other helpers
];https://stackoverflow.com/questions/32079363
复制相似问题