2016-07-21 6 views
0

CakePHP 2.5で常にプログラムされています。 今私は3.2に切り替えて、私が解決していない問題があります。CakePHP 3.2 - ローカルXMLファイルからXMLviewを生成

目標は、バージョン2.5でのVideoPlayer

のために必要とされる動的なXMLファイルであり、私は

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ファイルとして生成する必要がありますか?

ご利用いただきありがとうございます。

ジェローム

答えて

0

routes.phpにルーティングファイル拡張子を追加しましたか? (あなたは/cakeapp/articles/index.xmlが同じである場合)

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

これは

0
Router::extensions('xml'); 

あなたが動的に/cakeapp/articles.xmlのようなJSONとXMLファイルを生成することができますあなたのroutes.phpファイルからこの行を削除します。

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

routes.phpファイルのRouter::scope('/', function (RouteBuilder $routes) {の後にこの行を追加します。

今や、/AppFolder/YourController/genxml.xmlと入力してください。これにより、メソッドからのデータが返されます。 (この行は$this->set('_serialize', ['video']);です)

+0

追加情報を追加したい場合は[回答を編集](http://stackoverflow.com/posts/38507876/edit)してください。複数の回答を投稿しないでください。 – ndm

+0

私はあなたが言ったことをしました。以前はまったく同じ結果が出ていました。 "Router :: extensions( 'xml');" xml出力を取得しましたが、ビデオプレーヤーの特定のルールがないため使用できません。 私の質問は、どのようにpre-xmlファイルを使用することができます。ケーキ2では問題ありませんでした。現在私はcake3に失敗します。 –

関連する問題