【问题标题】:Save a given string to a xml-file, but it saves the current html code of the view将给定字符串保存到 xml 文件,但它保存视图的当前 html 代码
【发布时间】:2013-06-24 18:46:11
【问题描述】:

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

收到邮件,是一个扩展名为.opml的文件,但是里面不是$xmlString的内容,而是视图的html。 (你可以看看here)

这是我的控制器:

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');
  }
}
?>

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

【问题讨论】:

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

标签: xml file email cakephp opml


【解决方案1】:

问题是动作中的随机渲染

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2012-02-03
    • 2020-06-24
    • 2021-03-29
    相关资源
    最近更新 更多