0

我想在我的前端应用程序中的所有操作之前执行一些操作(php 脚本),然后将该脚本的结果传递给变量中的操作 - 这样我就可以从所有操作中获取变量值。我应该在哪里声明这样的东西?

4

2 回答 2

3

如果过滤器解决方案不能满足您的需求,您还可以使用 preExecute 函数创建一个基本操作类:

// app/frontend/lib/baseActions.class.php

class baseActions extends sfActions
{
   public function preExecute()
   {
      $this->myVar = .... // define your vars...
   }
}

然后您的模块操作类扩展您的 baseActions 类:

// app/frontend/modules/myModule/actions/actions.class.php

class myModuleActions extends baseActions
{
   public function executeIndex(sfWebRequest $request)
   {
      // var $this->myVar is available in any action and in your template
      ... 
   }
}

如果您必须在模块类操作中使用 preExecute 函数,请记住调用parent::preExecute()它。

于 2012-04-19T10:14:07.420 回答
2

什么样的信息?

我建议您使用过滤器

在你的apps/frontend/config/filters.yml

rendering: ~
myfilter:
  class: myCustomFilter

创建文件lib/filter/myCustomFilter.php

<?php
class myCustomFilter extends sfFilter
{
  public function execute ($filterChain)
  {
    if ($this->isFirstCall())
    {
      // do what ever you want here.
      $config = Doctrine_Core::getTable('Config')->findAll();
      sfConfig::set('my_config', $config);
    }

    $filterChain->execute();
  }
}

然后,您可以在任何地方检索数据:

sfConfig::get('my_config');
于 2012-04-18T14:12:07.200 回答