Сохранить данную строку в XML-файл, но он сохраняет текущий HTML-код представления

Итак, в основном у меня есть строка с именем $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');
  }
}
?>

Может кто-нибудь объяснить мне, почему там нет оригинальной строки?

1 ответ

Решение

Проблема заключалась в случайном рендере в действии

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

Поскольку строка уже была хорошо отформатирована (и в любом случае присваивать render() переменной не очень удобно), не было необходимости обрабатывать ее таким образом, прежде чем помещать в файл для присоединения.

Другие вопросы по тегам