首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sfGuard插件按UserProfile字段过滤

使用sfGuard插件按UserProfile字段过滤
EN

Stack Overflow用户
提问于 2012-07-20 03:33:53
回答 1查看 344关注 0票数 1

在使用Symfony 1.4中的sfGuardUserProfile插件时,如何根据sfGuard字段进行过滤?

按照我所认为的标准,我创建了一个sf_guard_user_profile表来保存名字、姓氏等字段。

我有一个相当库存的用户列表为我的管理索引页面。我可以很好地按用户名过滤。但是我不能按last_name这样的sf_guard_user_profile表中的字段进行过滤。

我的generator.yml看起来像

代码语言:javascript
复制
generator:
  class: sfPropelGenerator
  param:
    model_class: sfGuardUser

    config:
      list:
        display: [=username, first_name, last_name, last_login, role]
        batch_actions: []

      filter:
        display: [username]

      form:
        class: myGuardUserAdminForm

我可以通过将字段更改为:

代码语言:javascript
复制
filter:
    class: sfGuardUserProfileFormFilter

但是,当我使用有效的last_name值提交表单时,它不会过滤。返回所有记录。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-21 21:10:06

添加sfGuardUserProfileFormFilter作为过滤器类不是过滤first_name、last_name和其他配置文件字段的正确方式。

相反,您必须在筛选器显示列表中添加需要筛选的字段,如下所示:

代码语言:javascript
复制
filter:
    display: [username, first_name, last_name]

然后,您必须在sfGuardUserFormFilter中合并sfGuardUserProfileFormFilter

代码语言:javascript
复制
public function configure()
{
    parent::configure();

    $this->mergeForm(new sfGuardUserProfileFormFilter());
}

最后,为要过滤的合并表单sfGuardUserProfileFormFilter的每个字段在sfGuardUserFormFilter中添加一个函数addMyFieldColumnCriteria (Propel notation)。对于first_name,我们有:

代码语言:javascript
复制
    protected function addFirstNameColumnCriteria(Criteria $criteria, $field, $values)
    {
        if (!is_array($values))
            return;

        $criteria->addJoin(sfGuardUserPeer::ID, sfGuardUserProfilePeer::USER_ID, Criteria::INNER_JOIN);

        if (isset($values['is_empty']) && $values['is_empty'])
        {
            $criteria->add($field, null, Criteria::ISNULL);
            $criteria->addOr($field, '', Criteria::EQUAL);
        }
        else
        {
            $value = $values['text'];
            if ($value == '')
                return;
            $criteria->add($field, '%'.$value.'%', Criteria::LIKE);
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11567995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档