Сохранить данную строку в 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() переменной не очень удобно), не было необходимости обрабатывать ее таким образом, прежде чем помещать в файл для присоединения.