我想禁止未经许可的用户添加和删除某个型号的记录,但仍允许他们查看和编辑记录。
我知道如何禁用"添加"和"删除"行动,但在脚手架中,仍然会有标有" New X"和"删除X"
是的,我知道这个问题的一个可能的解决方案是“不要使用脚手架,烘烤观点。”#34;但我想知道:这可能仅靠脚手架吗?
我已经根据用户权限修改了$this->paginate
和$this->Model->hasAndBelongsToMany
,并通过脚手架做了一些非常巧妙的技巧,而我之前的工作让我觉得这可能是可行的,但是互联网和文档搜索让我无处可去。
答案 0 :(得分:0)
这样做的方法是customize scaffolding Views。您可以从蛋糕核心Cake\View\Scaffolds
获取用于这些模板的源,并将它们放在文档中所考虑的目的地,然后编辑它们以隐藏您想要的内容。
例如: 在index.ctp中,有以下代码片段生成操作列表:
echo '<td class="actions">';
echo $this->Html->link(__d('cake', 'View'), array('action' => 'view', ${$singularVar}[$modelClass][$primaryKey]));
echo ' ' . $this->Html->link(__d('cake', 'Edit'), array('action' => 'edit', ${$singularVar}[$modelClass][$primaryKey]));
从中删除编辑或任何您想要修改的内容。
你也可以使用控制器的beforeScaffold
回调方法,如下所示:
class MyController extends AppController{
public function beforeScaffold(){
parent::beforeScaffold();
if ($this->request->params['action'] == 'edit'){
$this->redirect('/?msg=notallowed');
}
}
}