将给定字符串保存到xml文件,但它会保存视图的当前html代码

将给定字符串保存到xml文件,但它会保存视图的当前html代码,xml,file,email,cakephp,opml,Xml,File,Email,Cakephp,Opml,因此,基本上我有一个名为$xmlString的字符串。已经准备好了。我想将这个字符串临时保存到一个XML文件(确切地说是:a)中,并将其发送到一个电子邮件地址 我收到这封电子邮件,它是一个扩展名为.opml的文件,但它没有填充$xmlString的内容,而是填充了视图的html。(你可以看看 这是我的控制器: App::uses('AppController', 'Controller'); App::uses('CakeEmail', 'Network/Email'); App::uses('

因此,基本上我有一个名为
$xmlString
的字符串。已经准备好了。我想将这个字符串临时保存到一个XML文件(确切地说是:a)中,并将其发送到一个电子邮件地址

我收到这封电子邮件,它是一个扩展名为.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');
  }
}
?>

有人能解释一下为什么它不是原始字符串吗?

问题在于动作中的随机渲染

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

由于字符串的格式已经很好(而且无论如何,将render()赋值给变量并不是很好),所以在将其放入要附加的文件之前,不需要这样处理它。

您能解释一下为什么要这样做吗
$xmlString=$this->render()
?看起来真的很奇怪。你不是说字符串的格式已经很好了吗?