0

我正在开发一个小型应用程序来管理数据库中的一些数据。我正在使用 Smarty 模板引擎让所有东西都以 MVC 风格运行,并尝试使用充当控制器的 PHP 脚本和充当视图的 smarty 模板来保持代码的清洁和结构化。

现在我想介绍一下权限的概念。例如,一个用户可以拥有查看和编辑某些数据的权限,而另一个用户可以拥有查看或编辑同一数据的不同部分的其他权限。

我在 2 个地方进行检查: 1. 控制器本身,在执行操作之前检查用户是否具有权限。2. 视图(智能模板),它检查用户是否有权限并禁用或更改为只读相应的控件。

然而,后一部分对我来说变得有点过于冗长了。

<textarea id="description" name="description" rows="3" 
{if !$user->can(Permissions::EDIT_DESCRIPTION)}readonly{/if}>{$item['description']|default:''}</textarea>     

有没有更好的方法可以使用 Smarty 来实现相同的结果,更具有声明性或简洁性?

4

1 回答 1

1

与其将整个 of$user及其方法和常量泄漏到 Smarty 中,不如制作一个或两个自定义修饰符来检查权限并根据它做一些有用的事情,例如:

一个check_access修饰符,左边是访问类型(第一个参数),右边是真假输出(第二个和第三个参数):

<textarea id="description" name="description" rows="3" {'EDIT_DESCRIPTION'|check_access:'':'readonly'}>{$item['description']|default:''}</textarea>

或者更具体地说,readonly如果有必要,它会输出属性;不过我想不出一个好名字:

<textarea id="description" name="description" rows="3" {'EDIT_DESCRIPTION'|readonly_if_no_access}>{$item['description']|default:''}</textarea>
于 2013-09-22T22:19:25.067 回答