我正在创建一个任务,定期向用户发送一些电子邮件(该任务涉及的门户网站)。 要创建电子邮件,我使用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'
);
其中$articles
为Doctrine_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
和其他人。
感谢您的关注。
答案 0 :(得分:1)
根据第一个问题, Symfony CLI与apache模块具有不同的php.ini 。我曾经习惯使用我没注意到的shor_opening_tag,除了print-php-statements之外,其他所有语句都应该包括<?php
而不是<?
。这就是foreach循环无法遍历$ popular_articles和其他人的原因。
感谢您的关注。