我正在尝试在 Symfony 任务中渲染一个部分并且没有运气。我发现 1.1 中的文档说只是调用get_partial()
,但显然在 1.4 中不再可用。我尝试手动加载帮助程序,sfLoader::getHelpers('Partial');
但我得到“找不到类 sfLoader”。任何帮助将不胜感激。
作为参考,我正在尝试从我的所有布局中使用的全局标题部分生成一个名为“header.html”的 HTML 文件,以包含在我正在集成的第三方论坛(简单机器/SMF)中。
我正在尝试在 Symfony 任务中渲染一个部分并且没有运气。我发现 1.1 中的文档说只是调用get_partial()
,但显然在 1.4 中不再可用。我尝试手动加载帮助程序,sfLoader::getHelpers('Partial');
但我得到“找不到类 sfLoader”。任何帮助将不胜感激。
作为参考,我正在尝试从我的所有布局中使用的全局标题部分生成一个名为“header.html”的 HTML 文件,以包含在我正在集成的第三方论坛(简单机器/SMF)中。
第一次加载:
sfContext::getInstance()->getConfiguration()->loadHelpers('Partial');
然后只需调用:
get_partial()
不要忘记在任务选项中添加应用程序名称。寻找这一行:
new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED,'The application name', 'frontend')
现在$this->configuration
返回sfApplicationConfiguration
您需要的。
这可以解决问题:
//load the Partial helper to be able to use get_partial()
$contextInstance = sfContext::createInstance($this->configuration);
$contextInstance->getConfiguration()->loadHelpers('Partial');
sfLoader
在 symfony 1.2 中已弃用 - 我认为您需要查看 1.4 API 和您熟悉的任何版本的升级帮助,因为这些将是您需要大量参考的资源。
解决问题的诀窍是使用类loadHelpers()
提供的方法加载帮助程序sfApplicationConfiguration
- 您的任务应该在其方法中挂钩此configure()
方法。我之前没有做过,请注意...
刚刚在一个任务中调用了一个用于发送免费试用 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'));
您可以访问当前配置
$this->configuration
您还可以在 taskClass::configure() 方法中定义应用程序命令选项(如果您使用 symfony generate:task 生成任务类,您应该将前端作为默认应用程序选项)。或者,您可以在调用任务时使用 cli 中的 --application=appName 传递应用程序。
确保在您的配置方法中有应用程序选项:
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 的实例