CakePHP 3.2 - 从本地XML文件生成XMLview

时间:2016-07-21 12:42:35

标签: xml file cakephp

我一直用CakePHP 2.5进行编程。 现在我切换到3.2并遇到一个我无法解决的问题。

目标是视频播放器

所需的动态XML文件

在版本2.5中,我可以在控制器中使用以下行

执行此操作
    public function genxml($id = null) {    
            if (!$this->Video->exists($id)) {
            throw new NotFoundException(__('Invalid video'));
    }

    $this->RequestHandler->respondAs('xml');
    $this->RequestHandler->renderAs($this, 'xml'); 
    $options = array('conditions' => array('Video.' . $this->Video->primaryKey => $id));
    $this->set('video', $this->Video->find('first', $options));
    }

不幸的是,这在版本中不起作用。 3 在这里,我使用了以下几行,但我没有达到我取得的成果。

    public function genxml($id = null) { 
            $this->RequestHandler->respondAs('xml');
            $this->RequestHandler->renderAs($this, 'xml');

            $video = $this->Videos->get($id);
            $this->set('video', $video);
            $this->set('_serialize', ['video']);
    }

然后,我应该如何对XML文件前的查询中的某些值进行生成?

在开始之前,谢谢你的帮助。

杰罗姆

2 个答案:

答案 0 :(得分:0)

您是否在routes.php中添加了路由文件扩展名?

Router::scope('/', function (RouteBuilder $routes) {
 $routes->extensions(['json', 'xml']);
 // Other code
}

这允许您动态生成JSON和XML文件,如/cakeapp/articles.xml(如果您希望/cakeapp/articles/index.xml相同)

答案 1 :(得分:0)

Router::extensions('xml');

从routes.php文件中删除此行。

$routes->extensions(['json', 'xml']);

在routes.php文件中的Router::scope('/', function (RouteBuilder $routes) {之后添加此行。

现在,只需添加/AppFolder/YourController/genxml.xml。这应该从您的方法返回数据。 (这一行做$this->set('_serialize', ['video']);