CakePHP 3.2-从本地XML文件生成XML视图



我一直用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文件中,查询是否生成为XML文件?

在开始之前感谢您的帮助。

Jerome

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

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

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

Router::extensions('xml');

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新