4

我正在尝试在 Symfony 任务中渲染一个部分并且没有运气。我发现 1.1 中的文档说只是调用get_partial(),但显然在 1.4 中不再可用。我尝试手动加载帮助程序,sfLoader::getHelpers('Partial');但我得到“找不到类 sfLoader”。任何帮助将不胜感激。

作为参考,我正在尝试从我的所有布局中使用的全局标题部分生成一个名为“header.html”的 HTML 文件,以包含在我正在集成的第三方论坛(简单机器/SMF)中。

4

7 回答 7

7

第一次加载:

sfContext::getInstance()->getConfiguration()->loadHelpers('Partial');

然后只需调用:

get_partial()
于 2011-12-15T15:24:00.577 回答
3

不要忘记在任务选项中添加应用程序名称。寻找这一行:

new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED,'The application name', 'frontend')

现在$this->configuration返回sfApplicationConfiguration您需要的。

于 2010-10-22T09:05:02.467 回答
3

这可以解决问题:

//load the Partial helper to be able to use get_partial()
$contextInstance = sfContext::createInstance($this->configuration);
$contextInstance->getConfiguration()->loadHelpers('Partial');
于 2010-10-30T00:13:56.380 回答
1

sfLoader在 symfony 1.2 中已弃用 - 我认为您需要查看 1.4 API 和您熟悉的任何版本的升级帮助,因为这些将是您需要大量参考的资源。

解决问题的诀窍是使用类loadHelpers()提供的方法加载帮助程序sfApplicationConfiguration- 您的任务应该在其方法中挂钩此configure()方法。我之前没有做过,请注意...

于 2010-04-04T23:17:52.217 回答
1

刚刚在一个任务中调用了一个用于发送免费试用 nag 电子邮件的部分代码:

//combines the partial with passed variables and puts the results in a string variable
$contextInstance = sfContext::createInstance($this->configuration);
$contextInstance->getConfiguration()->loadHelpers('Partial');

$partial_in_a_string = $contextInstance->getController()
          ->getAction('module_name', 'action_name')
          ->getPartial('module_name/partial_name', array('var_name'=>'var_value'));
于 2011-11-05T14:22:25.790 回答
0

您可以访问当前配置

$this->configuration

您还可以在 taskClass::configure() 方法中定义应用程序命令选项(如果您使用 symfony generate:task 生成任务类,您应该将前端作为默认应用程序选项)。或者,您可以在调用任务时使用 cli 中的 --application=appName 传递应用程序。

于 2010-04-07T17:57:13.280 回答
0

确保在您的配置方法中有应用程序选项:

protected function configure()
{
    $this->addOptions(array(
        new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'frontend')
    ))
    ....

然后,在执行方法中:

protected function execute($arguments = array(), $options = array())
{
    sfContext::createInstance($this->configuration)->getConfiguration()->loadHelpers('Partial');

这样,您将防止这些错误:

“默认”上下文不存在。

传递给 sfContext::createInstance() 的参数 1 必须是 sfApplicationConfiguration 的实例

于 2019-09-29T19:17:19.140 回答