Partials不解析传递给它的变量

时间:2012-01-17 10:22:34

标签: symfony-1.4

我正在创建一个任务,定期向用户发送一些电子邮件(该任务涉及的门户网站)。 要创建电子邮件,我使用partials。

应用程序/模板/ _email_plain.php:

Hi, <?= $login ?>

应用程序/模板/ _email_html.php:

Hi, <?= $login ?>

不幸的是,在

之后
$plain = get_partial('global/email_plain', array('login' => 'John Doe'));
$html = get_partial('global/email_html', array('login' => 'John Doe'));

并通过电子邮件或var_dump()在我收到的任务控制台中发送

Hi, <?= $login ?>

变量$login未经处理。

有没有人遇到过这样的问题? 怎么解决?


short_open_tag已启用 - &gt;我在整个项目中使用它并且它有效。不过,我已将所有<?=更改为<?php echo以便进行检查,并且神奇地(?)可以正常工作。这让我相信Symfony CLI不会读取主php.ini

这不是问题的结束。 该任务还应该发送一些包含过去一周评价最高的文章的新闻通讯。

$params = array('popular_articles' => $popular_articles, 'popular_threads' => $popular_threads);


Mailer::SendBulkMessage(
     $this->getMailer(), 
     get_partial('global/email_weekly_newsletter_plain', $params ),
     get_partial('global/email_weekly_newsletter_html', $params ),
     $users,
    'Weekly newsletter'
);

其中$articlesDoctrine_Collection

$partial = get_partial('global/partial, $partialParameters) 我在foreach循环中打印文章的标题我得到一个错误,说我在非对象上使用->getTitle()

(部分地,$articles类是sfOutputEscaperIteratorDecorator


来自部分的问题循环:

<h3>Most commented articles</h3>
<? foreach( $popular_articles as $article ): //Line#10 ?>
    <?php link_to( $article->getTitle(), $article->getUrlPath(), array('class' => 'newsletter-article-item') ); ?><br /> 
<? endforeach; ?>


<h3>Hottest discussions</h3>
<? foreach( $popular_threads as $thread ): ?>
    <?php link_to( $thread->getTitle(), absoluteRoute::getRouteForForum('forum_thread_view', array('id' => $thread->getId())), array('class' => 'newsletter-article-item') ); ?><br />
<? endforeach; ?>

以上产量

Fatal error: Call to a member function getTitle() on a non-object in P:\ath\to\project\apps\content\templates\_email_weekly_newsletter_html.php on line 11

Call Stack:
    0.0004     629696   1. {main}() P:\ath\to\project\symfony:0
    0.0055     985544   2. include('P:\ath\to\project\lib\vendor\symfony\lib\command\cli.php') P:\ath\to\project\symfony:14
    0.6824    9908768   3. sfSymfonyCommandApplication->run() P:\ath\to\project\lib\vendor\symfony\lib\command\cli.php:20
    0.6841    9910728   4. sfTask->runFromCLI() P:\ath\to\project\lib\vendor\symfony\lib\command\sfSymfonyCommandApplication.class.php:76
    0.6841    9911008   5. sfBaseTask->doRun() P:\ath\to\project\lib\vendor\symfony\lib\task\sfTask.class.php:97
    0.7111   10729624   6. weeklyParentNewsletterTask->execute() P:\ath\to\project\lib\vendor\symfony\lib\task\sfBaseTask.class.php:68
    1.4238   25474480   7. get_partial() P:\ath\to\project\lib\task\weeklyParentNewsletterTask.class.php:76
    1.4255   25479424   8. sfPartialView->render() P:\ath\to\project\lib\vendor\symfony\lib\helper\PartialHelper.php:220
    1.4265   25479784   9. sfPHPView->renderFile() P:\ath\to\project\lib\vendor\symfony\lib\view\sfPartialView.class.php:124
    1.4277   25536920  10. require('P:\ath\to\project\apps\content\templates\_email_weekly_newsletter_html.php') P:\ath\to\project\lib\vendor\symfony\lib\view\sfPHPView.class.php:75

解决方案

根据第一个问题,Symfony CLI与apache模块有不同的php.ini。 我曾经习惯使用shor_opening_tag而我没有注意到,除了 printing-php-statements 之外,其他所有其他应该包括<?php而不是<?。 这就是为什么foreach循环无法遍历$popular_articles和其他人。

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

根据第一个问题, Symfony CLI与apache模块具有不同的php.ini 。我曾经习惯使用我没注意到的shor_opening_tag,除了print-php-statements之外,其他所有语句都应该包括<?php而不是<?。这就是foreach循环无法遍历$ popular_articles和其他人的原因。

感谢您的关注。