【问题标题】:Override executeIndex in admin modules在管理模块中覆盖 executeIndex
【发布时间】:2010-10-12 13:19:57
【问题描述】:

在symfony生成的管理中,如何重写exe​​cuteIndex()方法?

我只想列出具有特定状态的项目,而我在 cache/backend/dev/modules/auto.../ 中找到的所有项目都是:

$this->pager = $this->getPager();

如何更改寻呼机使用的查询?

【问题讨论】:

  • 更改 getPager() 有效,但管理页面仍然显示一个空表,显示“37 个结果(第 1/2 页)”,而不是说“无结果”

标签: symfony1 admin-generator


【解决方案1】:

与覆盖现有类中的任何其他方法的方式相同,例如表单中的configure()。打开apps/yourapp/yourmodule/actions/actions.class.php 并添加:

public function executeIndex(sfWebRequest $request)
{
  // do whatever you want to here.
}

您可能会发现在您的缓存中查找自动生成的版本是个好主意,然后在开始调整之前将所需的部分复制到您的覆盖方法中 - 这为您提供了一个开始的工作基础。

【讨论】:

  • “你可能会发现在缓存中查找自动生成的版本是个好主意”我是个白痴,我没想过这样做^^;
  • 嘿,别忘了先将它加载到浏览器/测试套件中,然后再想知道它为什么不在缓存文件夹中……去过那里,做到了(今天)! :-)
【解决方案2】:

类似于manu所说的。但我建议您使用 getPager 而不是 executeIndex。更好一点......但与manu的答案基本相同。

  public function getPager()
  {
     $pager = parent::getPager();
     $pager->setQuery(Doctrine_Core::getTable('Content')->getListeByState('Published'));
     return $pager;
  }

【讨论】:

    【解决方案3】:

    没有必要仅仅为了过滤您的结果而忽略操作或模板。 最好在 generator.yml 中使用 table_method 选项 见http://www.symfony-project.org/jobeet/1_4/Doctrine/en/12#chapter_12_sub_table_method

    【讨论】:

      【解决方案4】:
        public function executeIndex(sfWebRequest $request)
        {
           parent::executeIndex($request);
      
           $this->pager->setQuery(Doctrine_Core::getTable('Content')->getListeByState('Published'));
      
        }
      

      【讨论】:

        猜你喜欢
        • 2018-02-01
        • 2014-12-09
        • 2013-01-23
        • 1970-01-01
        • 2012-07-14
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 2018-10-22
        相关资源
        最近更新 更多