アプリケーションで XML+XSL テンプレートをレンダリングする必要があり、以前は CakePHP 3.0 で動作していました。最近 3.1 に切り替えましたが、動作しなくなりました。問題は、XML の書式設定されたビューを持っていたのに、今は単純な文字列しか得られないことです。
移行ガイドには、のいくつかの変更について何かが書かれていRequestHandlerComponent
ますが、何の役にも立ちません (あるいは、それは私だけで、要点がわかりません :))。
これは私のコントローラーです (Cake3.0 の場合とまったく同じです):
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Utility\Xml;
use Cake\Event\Event;
use Cake\Routing\Router;
use Cake\ORM\TableRegistry;
use Cake\Filesystem\Folder;
use Cake\Filesystem\File;
use Cake\Network\Email\Email;
use Cake\Core\Configure;
use Cake\I18n\Time;
/**
* Invoices Controller
*
* @property App\Model\Table\InvoicesTable $Invoices
*/
class InvoicesController extends AppController
{
public $components = [
'Browser',
'Reorder11'
];
public $helpers = [
'Multiple'
];
public $paginate = [];
public function initialize()
{
parent::initialize();
$this->loadComponent('Paginator');
$this->loadComponent('RequestHandler');
}
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
$this->Auth->allow(['demo']);
}
/*
* ... several other functions ...
*/
public function viewxml($id = null)
{
$this->viewBuilder()->layout('xml');
$invoice = $this->Invoices->myInvoice($id, $this->Auth->user('id'));
$this->RequestHandler->respondAs('xml');
$this->set('invoice', $invoice);
}
}
実にxml.ctp
シンプルなレイアウト
echo $this->fetch('content');
viewxml.ctp
テンプレートはxmlを文字列としてエコーするだけです。
フォーマットされた XML+XSL を再度取得するにはどうすればよいですか?