0

所以,基本上我有一个名为$xmlString. 它已经形成了良好的状态。我想将此 String 临时保存到 XML 文件中(准确地说:一个OPML)并将其发送到电子邮件地址。

我收到这封邮件,它是一个扩展名为 .opml 的文件,但不是用 . 的内容填充的$xmlString,而是用视图的 html 填充的。(你可以看这里)

这是我的控制器:

App::uses('AppController', 'Controller');
App::uses('CakeEmail', 'Network/Email');
App::uses('File', 'Utility');

class UsersController extends AppController {
    public function beforeFilter() {
        parent::beforeFilter();
        // Set XML
        if ($this->RequestHandler->isXml()) {
            $this->RequestHandler->setContent('xml');
        }
}

  public function sendOpml($xmlString) {

    $this->autoRender=false;
    $xmlString=$this->render();

    //here is something wrong...    
    file_put_contents(TMP.'podcasts.opml', $xmlString);

    $Email = new CakeEmail('default');
    $Email->from(array('my@mailadress.com' => 'Podcaster'));
    ...
    $Email->attachments(array(
        'podcasts.opml' => array(
            'file' => TMP.'podcasts.opml',
            'mimetype' => 'text/x-opml')));
    $Email->send('My message');
  }
}
?>

有人可以解释一下为什么它不是那里的原始字符串吗?

4

1 回答 1

1

问题是动作中的随机渲染

  public function sendOpml($xmlString) {
     $this->autoRender=false;
     $xmlString=$this->render(); /*this is the problem */

由于字符串已经被很好地格式化(并且无论如何将 render() 分配给变量并不是很漂亮),因此在将其放入要附加的文件之前无需以这种方式处理它。

于 2013-06-24T20:47:58.250 回答