gpt4 book ai didi

symfony1 - 多用户设置中的 Symfony Admin Generator(在 LIST View 中限制记录)

转载 作者:行者123 更新时间:2023-12-05 00:42:38 27 4
gpt4 key购买 nike

我正在使用 SF 1.2.9 构建网站。我想使用管理生成器为我使用的对象模型提供管理功能(特别是 LIST ,编辑和删除)。

我已经阅读了 Symfony 文档(第 14 章),但除非我错了,到目前为止我遇到的所有示例似乎都是为单个用户环境编写的。这意味着返回给用户的记录列表本质上是该表中的所有记录。在多用户环境中,这充其量是不负责任的,并且可能是安全威胁。将返回给用户的记录列表限制为他们拥有(即创建)的记录列表是必要的要求。

假设我有一个具有(YML)架构的表,如下所示:

foobar_dongle:
id: ~
title: varchar(255)
info: longvarchar
owner_id: ~
created_at: ~

其中所有者 id 是用户表的 FK。

假设我生成一个这样的管理模块:
symfony propel:generate-admin backend FoobarDongle --module=dongle

问题:
如何修改 中返回给用户的记录列表列表 管理员生成器生成的部分代码?正如我上面提到的,目前(即开箱即用),管理生成器向用户呈现(我觉得相当天真),以及正在管理的模型的整个记录​​集。我需要能够以某种方式限制该列表,以便我只能返回该用户拥有的记录。

这就是我试图找出如何去做的事情。

我将非常感谢任何可以向我展示在使用管理生成器管理对象模型时如何限制返回的记录列表的人。理想情况下,我希望能够指定一个具有所有自定义“过滤”逻辑的自定义方法 - 但只要我可以将用户可以看到的记录列表(在管理员中)限制为只有他的记录的所有者,这就是我想做的一切。

最佳答案

如果您只想将返回的对象限制在一两个模块中,请执行以下操作:

转至actions.class.php你的模块文件。默认情况下应该没有方法,并且类应该继承自 autoModuleNameActions你。插入以下方法:

protected function buildQuery()
{
$query = parent::buildQuery();
// do what ever you like with the query like
$query->andWhere('user_id = ?', $this->getUser()->getId());
return $query;
}

但是,如果您为更多模块执行此操作,这将变得不方便。在这种情况下,我会建议 create a new admin generator theme .

如果你想根据管理生成器配置文件中的一些自定义参数进行查询,那么你必须扩展这个文件。但不仅仅是添加一个新参数。您可以阅读 this article这该怎么做。

如果你想了解更多关于自动生成的类,看看这个类: cache/[app]/[env]/modules/auto[ModuleName]/actions/actions.class.php .

评论后编辑:

我想你看错了类(class)。看这里: cache/[app]/[env]/modules/auto[ModuleName]/actions/actions.class.php .

我设置了 插入 项目来检查它,你感兴趣的方法是:
protected function buildCriteria()
{
if (is_null($this->filters))
{
$this->filters = $this->configuration->getFilterForm($this->getFilters());
}

$criteria = $this->filters->buildCriteria($this->getFilters());

$this->addSortCriteria($criteria);

$event = $this->dispatcher->filter(new sfEvent($this, 'admin.build_criteria'), $criteria);
$criteria = $event->getReturnValue();

return $criteria;
}

我也把这个类的全部内容发到 pastebin .很多,函数在第245行。即使你没有找到这个类,你应该可以像这样覆盖这个方法:
protected function buildCriteria()
{
$criteria = parent::buildCriteria();
// do something with it
return $criteria;
}

我不知道这些标准对象,所以我不能帮助你,但我希望其他的事情能帮助你。

关于symfony1 - 多用户设置中的 Symfony Admin Generator(在 LIST View 中限制记录),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1871039/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com