Doctrine Admin Generator 的“隐藏”功能

Doctrine Admin Generator 的“隐藏”功能

Chris Yue No Comment
Posts

使用Doctrine的Admin generator的同学肯定会经常去两个地方查看相关文档,一个是A Gentle Introduction to symfony – Chapter 14 – Admin Generator,另一个是The symfony Reference Book – The generator.yml Configuration File。不过在使用过程当中你会发现官方的资料还是很不够用的,有很多有用的用法,这两个文档里面是没有提到的。在我使用其功能的过程中,我也发现了不少官方文档里面没说到的“隐藏”秘籍,打算在这里分享给大家。

如何将筛选表单里的文本类型筛选转化为下拉框?
找到对应的filter form class,把要改变的widget改成sfWidgetFormChoice类型,当然对应的validator也要改成sfValidatorChoice类型。完成后还需在class里添加为public的getFields()方法,并在方法写入以下代码(假设你要改变的widget名字叫category):

public function getFields()
{
  $ret = parent::getFields();
  $ret['category'] = 'Enum';
  return $ret;
}

这样不用在写其他代码就可以正常使用了。

如何添加一个筛选项
如果你想添加一个筛选项,但是这项却是在另外一个表里的数据,比如在电话表里面筛选出名字叫chris的用户的所有电话(电话表里只记录用户id),那么除了在filter form class里面添加username相应的widget和validator,还需要在添加一个public类型的addUsernameColumnQuery方法:

public function addUsernameColumnQuery($query, $field, $value)
{
  $rootAlias = $query->getRootAlias();
  $query->innerJoin($rootAlias.'.User u')->addWhere('u.name like ?', "%{$value}%");
}

Doctrine Admin Generator 的“隐藏”功能 by Chris Yue is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

微信赞赏码

写作累,服务器还越来越贵
求分担,祝愿好人一生平安
天使打赏人

发表评论

3 + 5 =