CakePHP 3Rssエラー

ルカスマン

rssを実行したいので、このhttp://book.cakephp.org/3.0/en/views/helpers/rss.htmlに従いましたしかし、rssのルーターにアクセスすると、コントローラーが存在しないというコントローラーエラーが返されるため、正しく機能しません。私のルートはこれです:

/posts/index.rss

この要求を行うと、コントローラーが見つからないというエラーが返されます。

The action index.rss is not defined in PostsController

rssを受け入れる「アプリ」を宣言しました。完全なconfig / routes.php

use Cake\Core\Plugin;
use Cake\Routing\Router;
Router::defaultRouteClass('Route');

Router::scope('/', function ($routes) {

    Router::extensions(['json', 'xml', 'rss']);
    $routes->connect('/', ['controller' => 'Fronts', 'action' => 'index']);
    $routes->connect('/contact', ['controller' => 'Fronts', 'action' => 'contact']);
    $routes->connect(
        '/:controller/:action/:id-:slug', 
        [], 
        [
            'pass' => ['id', 'slug'], 
            'id' => '[0-9]+',
            'routeClass' => 'DashedRoute'
        ]
    );

    $routes->fallbacks('InflectedRoute');
});

Plugin::routes();

また、コントローラーの:: initialize()でLoadComponentを作成しました

public function initialize()
{
    parent::initialize();
    $this->loadComponent('RequestHandler');
}

そして私のコントローラー

class PostsController extends AppController
{
    ...
   public function index()
   {
    ...
        if($this->RequestHandler->isRss()) :
            $_rss = $this->Posts->find()->limit(20);
            $this->set(compact('_rss'));
           return;  
        endif;
    ...
   }
}

何が問題なのですか?

ありがとう.. !!!

ndm

拡張機能を間違った方法でRouter::extensions()定義 Router::extensions()ています。呼び出されたに接続さているすべてのルートのグローバル拡張機能を定義する必要があります。

したがって、スコープ内では、呼び出しRouter::extensions()が遅すぎますRouter::scope()。これは、呼び出されたときにグローバル拡張を読み取り、スコープに渡すメソッドであるためです。

Router::extensions()スコープ外で呼び出す

Router::extensions(['json', 'xml', 'rss']);

Router::scope('/', function ($routes) {
    // ...
});

またはRouterBuilder::extensions()スコープ内で使用します(これは、スコープが継承された可能性のあるグローバル拡張をオーバーライドすることに注意してください)

Router::scope('/', function (\Cake\Routing\RouteBuilder $routes) {
    $routes->extensions(['json', 'xml', 'rss']);
    // ...
});

クックブック>ルーティング>ルーティングファイル拡張子も参照してください。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事