CakePHP3 Rss错误
我想做一个rss,我遵循了这个。但是这些东西不能正常工作,因为当访问rss的路由器时,它返回一个控制器错误,说控制器不存在。我的路线是:CakePHP3 Rss错误,cakephp,controller,rss,components,cakephp-3.0,Cakephp,Controller,Rss,Components,Cakephp 3.0,我想做一个rss,我遵循了这个。但是这些东西不能正常工作,因为当访问rss的路由器时,它返回一个控制器错误,说控制器不存在。我的路线是: /posts/index.rss 执行此请求时,它返回一个未找到控制器的错误 The action index.rss is not defined in PostsController 我声明“app”接受rss..My complete config/routes.php use Cake\Core\Plugin; use Cake\Routing\R
/posts/index.rss
执行此请求时,它返回一个未找到控制器的错误
The action index.rss is not defined in PostsController
我声明“app”接受rss..My complete 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;
...
}
}
还有我的控制器
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;
...
}
}
怎么了
谢谢 您定义扩展的方式错误,
Router::extensions()
需要为调用Router::extensions()
后连接的所有路由定义全局扩展
因此,在作用域内,调用Router::extensions()
为时已晚,因为调用Router::scope()
方法时会读取全局扩展并将它们传递到作用域中
调用范围之外的Router::extensions()
Router::extensions(['json', 'xml', 'rss']);
Router::scope('/', function ($routes) {
// ...
});
或者在作用域内使用RouterBuilder::extensions()
(请注意,这会覆盖作用域可能继承的全局扩展)
另请参见真的
/plosts/index.rss
?是不是应该是/post/index.rss
?对不起,我写错了:)。。。是/post/index.rssYou放置的Router::extensions('rss')
在/config/routes.php
中?/logs/
中是否有其他错误消息?你是否在src/Template/Posts/rss/index.ctp中创建了一个视图文件?是的,把它放在…Router::extensions(['json','xml','rss']);视图也被创建了…只给出了找不到控制器的错误…在我的调试器->请求显示此插件(null)控制器发布操作索引.rss\u ext(null)pass(empty)isAjax(false)\u ext应该是\u ext(xml)或\u ext(rss)?谢谢家伙…这解决了我的问题…现在我理解了这个问题…非常非常非常好…)