更多内容在
http://www.onepie.org
symfony自动生成的Filter有一些局限性,比如不能过滤关联表的特定字段,过滤的表单只有input和select两种,
下面介绍处理上面两个问题的解决方案。
1. 关联表字段查询
假设我们有Order和User两张表,Order中有user_id和User关联,Syfmony默认可以通过user_id来过滤,现在想通过User的name字段模糊查询获得用户的所有订单。
在
sfFormFilterDoctrine中有方法doBuildQuery,
if ($this->getTable()->hasField($field))
{
$method = sprintf('add%sColumnQuery', self::camelize($this->getFieldName($field)));
}
else if (!method_exists($this, $method = sprintf('add%sColumnQuery', self::camelize($field))) && null !== $type)
{
throw new LogicException(sprintf('You must define a "%s" method to be able to filter with the "%s" field.', $method, $field));
}
从上面的代码可以看出只要增加一个add%FiledName%ColumnQuery方法即可以自定义每个字段的查询,所以只要添加如下代码
public function addUsernameColumnQuery(Doctrine_Query $query, $field, $value)
{
$query->leftJoin('r.User u');
if(!empty($value)){
$query->andWhere('u.name like ?', "%$value%");
}
}
2. 自定义Filter表单字段类型
假设我们有一张商品表Product, 其中有一个字段status,我们需要使用checkbox选择多个状态来过滤商品
首先在ProductFormFilter的configure函数中添加
$this->widgetSchema['status'] = new sfWidgetFormChoice(array(
'choices' => self::$STATUS_TEXT,
'multiple' => true,
'expanded' => true,
));
$this->validatorSchema['status'] = new sfValidatorChoice(array(
'required' => false,
'multiple' => true,
'choices' => array_keys(self::$STATUS_TEXT),
));
这和定义Form的widget一样,但是如果这样的还不行, 因为涉及到多选,但默认status是input的类型,所以我们需要让symfony知道我们现在传过来的参数可能是数组,在filter中重载getFields方法,把status字段设为ForeignKey类型
public function getFields()
{
$fields = parent::getFields();
$fields["status"] = "ForeignKey";
return $fields;
}
分享到:
相关推荐
这是一种简单的vue过滤器,提供了与使用Symfony trans过滤器在树枝模板中使用翻译类似的在vue中使用翻译的方式。 过滤器未绑定到Symfony框架,因此也可以用作独立程序包。 还使用来自Symfony的count参数实现了多项...
Symfony应用程序文档生成器
Wise:一个Symfony配置管理器
著名的PHP开发框架 symfony是什么?symfony能做什么?使用symfony需要掌握哪些知识?此文档会解答这些问题。
HTMLPurifierBundle, 在PHP中,HTML过滤器是一个标准的HTML过滤器 ExerciseHTMLPurifierBundle这个包将 HTMLPurifier 集成到 Symfony2.安装 2.1和 above ( 使用 Composer )在 composer.json file: 中需要捆绑包
“核心架构”篇,讲述模型视图控制器(MVC)在symfony中的实现,以及如何用这样的三层结构模型建立页面和应用程序;“特殊功能”篇,解释如何使用symfony加快“漂亮”的URL、表单、验证、Ajax交互、缓存和国际化应用...
基于最佳Web开发实践,已经有多个网站完全采用此框架开发,symfony的目的是加速Web应用的创建与维护。 Symfony的系统需求不高,可以被轻易的安装在任意设置上:你只需一个Unix或Windows,搭配一个安装了PHP5的网络...
具有针对Symfony2的分页,排序和过滤器的自定义分类 重要的!!!!!!!!!!! Symfony> = 2.3.0 在您的composer.json中添加 { "require": { "fourcoders/generatecrud-bundle": "dev-master" } } 在您的...
逻辑过滤器束 Symfony和API平台的过滤器和逻辑
symfony-jsonapi, 用于 Symfony 2和 Symfony 3的JSON API变压器包 Symfony json对于 Symfony 2和 Symfony 3 安装工具使用情况创建映射输出API响应JSON API请求JSON API响应与NelmioApiDocBund
Symfony是一个用于开发PHP5项目的web...也就是说,你拥有整个设置的控制权:从路径结构到外部库,几乎一切都可以自定义。为了符合企业的开发条例,Symfony还绑定了一些额外的工具,以便于项目的测试,调试以及归档。
symfony_sandbox.tgz symfony_sandbox.tgz symfony_sandbox.tgz symfony_sandbox.tgz
基于最佳Web开发实践,已经有多个网站完全采用此框架开发,symfony的目的是加速Web应用的创建与维护。 同时,它还包含了很多工具和类用以缩短开发复杂的网络应用的时间。 但是它的使用需要安装composer等工具,并且...
symfony1.4.9源码,symfony源代码
Symfony3 CRUD生成器捆绑包具有分页,过滤,Twitter引导程序3.3.6标记和许多其他功能。 它易于使用且可完全自定义。 旨在恢复旧版Symfony 1.4 admin生成器的功能,但从扩展而来,具有其他选项和功能。 产品特点 ...
symfony API CHM手册 好不容易搞到的,欢迎下载
Symfony_metabook_2.0 php开发框架symfony使用文档
symfony权威指南中文版 内容详细介绍了symfony,以及如何使用。配合官方的课程,可以在短期内学会使用symfony开发php的应用服务,另外附赠一个难得的symfony Model Criteria语句对照表,开发起来更是得心应手。
详尽的描述了symfony的实现代码和配置,对初学者来说有很大的帮助
symfony2常规操作,这是平时研究时积累下来的文档。