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