0

だから、基本的に私はという名前の文字列を持ってい$xmlStringます。すでに整形です。この文字列を一時的に 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 に答える