CakePHP - 禁止在脚手架中添加动作

时间:2015-01-23 19:21:22

标签: php cakephp

我想禁止未经许可的用户添加和删除某个型号的记录,但仍允许他们查看和编辑记录。

我知道如何禁用"添加"和"删除"行动,但在脚手架中,仍然会有标有" New X"和"删除X"

是的,我知道这个问题的一个可能的解决方案是“不要使用脚手架,烘烤观点。”#34;但我想知道:这可能仅靠脚手架吗?

我已经根据用户权限修改了$this->paginate$this->Model->hasAndBelongsToMany,并通过脚手架做了一些非常巧妙的技巧,而我之前的工作让我觉得这可能是可行的,但是互联网和文档搜索让我无处可去。

1 个答案:

答案 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');
  }

}

}