我有两个申请。我想根据存储在数据库中的字段禁用一个。 是否可以通过代码禁用应用程序((如果它不可用)模块)可能使用过滤器)?我发现了一段执行项目的代码:禁用但我认为它不够好。
我认为另一种方法是检查存储在自定义过滤器内的数据库中的值,然后重定向到通知“该网站已被禁用”的操作。
答案 0 :(得分:1)
您可以创建一个过滤器,检查当前用户是否可以访问所请求的模块/操作:
if($this->getRequest()->getParameter('module')=='yourmodule' && !$this->getUser()->mayAccess('yourmodule'()){
//redirect to somewhere else
}
在用户类中:
function mayAccess($module){
$key = $module.'_enabled';
if(!$this->hasAttribute($key)){
$enabled = ... //Fetch permission from database
$this->setAttribute($key,$enabled);
}
return $this->getAttribute($key);
}
这样的事情。也许您可以使用模块security.yml文件并覆盖检查用户凭据和权限的函数,例如 hasCredential()方法?这实际上似乎是一种更干净的方式。
请参阅:http://www.symfony-project.org/api/1_4/sfBasicSecurityUser
答案 1 :(得分:0)
您可以在index.php文件中仅动态加载所需的应用程序。