如何检查模板中是否已应用过滤器?

时间:2012-10-16 11:04:15

标签: php symfony1 symfony-1.4

我正在开发一个管理生成器模块。我想隐藏项目列表,直到用户使用过滤器。所以我想检查过滤器表格是否已发送。

我可以在indexSuccess.php模板中查看任何var吗?

1 个答案:

答案 0 :(得分:2)

当用户提交过滤器时,过滤器会存储在会话中。

因此,在您的模板中,您可以通过调用会话来访问已定义的过滤器。如果没有默认值过滤器,它将返回一个空数组(如果使用输出保护,则可能为sfOutputEscaperArrayDecorator。)

例如,如果模块名称为car,则可以使用以下命令在模板中获取过滤器:

$filters = $sf_user->getAttribute('car.filters', null, 'admin_module');

如果你使用输出保护,你可以这样做:

$filters = sfOutputEscaper::unescape($sf_user->getAttribute('car.filters', null, 'admin_module'));

如果你没有过滤器,你会得到var_dump的东西(第一个解决方案):

object(sfOutputEscaperArrayDecorator)[181]
  private 'count' => int 0
  protected 'value' => 
    array
      empty
  protected 'escapingMethod' => string 'esc_specialchars' (length=16)

第二个:

array
  empty

例如,如果您有一些过滤器定义,您将获得:

array
  'model' => 
    array
      'text' => string 'test' (length=4)
  'updated_at' => 
    array
      'from' => null
      'to' => null
  'created_at' => 
    array
      'from' => null
      'to' => null