【问题标题】:Symfony: a way to show/hide list rows in action?Symfony:一种显示/隐藏列表行的方法?
【发布时间】:2011-11-02 23:05:45
【问题描述】:

我尝试制作一组​​与索引操作类似的操作,但它们显示过滤后的数据(某种现成的报告)。

到目前为止,我想出了这样的东西::

public function executeReport(sfWebRequest $request)
{ 
  $this->setFilters(array('field'=>'value'));

  $this->forward($this->getModuleName(), 'index');
}

但我也想修改列集。

默认设置存储在 generator.yml

generator:
  param:
    config:
      list:
        display: [field1, field2, field3]

有没有什么方法可以在executeReport() 中只设置field2 和field3 可见?

【问题讨论】:

    标签: symfony1 action generator yaml backend


    【解决方案1】:

    您可以在 module/lib/moduleGeneratorConfiguration.class.php 中覆盖您的生成器配置:

    用于获取字段的方法是这样的:

    public function getListDisplay()
    {
      return array('field2','field3');
    }
    

    我还没有测试过,但你应该可以用不同的值覆盖它:

    public function getListDisplay()
    {
      return sfConfig::get('app_my_columns');
    }
    

    【讨论】:

    • getListDisplay() 有效。但是现在如何根据操作设置列?
    【解决方案2】:

    仅使用您需要的字段修改您的模板 ReportSuccess.php。

    【讨论】:

    • 我也必须修改/覆盖一些部分。我试图避免这种情况。 @Arend 给出了更好的解决方案
    【解决方案3】:

    也许我错了,但如果你隐藏属性,你并没有隐藏任何行,你将隐藏列。要隐藏/显示行,您可以在模板文件上使用类似于此的结构执行此操作:

    foreach($row_you_can_show as $row){
        if(you_want_to_show($row)){
             echo "<tr>...</tr>";
        }
    }
    

    如果你想动态控制它,你可以用一个javascript函数来做,但是更复杂....

    祝你好运

    【讨论】:

      猜你喜欢
      • 2013-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-13
      • 2013-07-17
      相关资源
      最近更新 更多