是什么导致了CI4中出现这种奇怪的路由问题



我开始思考,我在这里错过了一些非常简单的东西,但就是看不到,尽管从CI2开始就使用PHP和CI进行编码。我已经思考了将近48个小时。

在Mac上的本地MAMP环境和共享托管平台上,以下路由代码都不正常。Allow_rewrite已打开,.htaccess文件正在工作。该代码最初是用CI4的alpha版本开发的,现在通过Composer更新为CI4.0.4。

在/config/routes.php中,我有:

$routes->setDefaultNamespace('AppControllers');
$routes->setDefaultController('Home');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->setAutoRoute(true); //This has been tried true and false

/**
* --------------------------------------------------------------------
* Route Definitions
* --------------------------------------------------------------------
*/
$routes->get('/', 'Home::index');
$routes->get('/dashboard', 'Users::dashboard', ['as' => 'dashboard']);

这很好,并且可以路由到仪表板,没有任何index.php文件,一切都很好

但是,一旦路线定义更改为:

$routes->get('/', 'Home::index');
$routes->get('/dashboard/news/(:num)', 'Users::newsstory/$1');
$routes->get('/dashboard/account', 'Users::accountsettings');
$routes->get('/dashboard', 'Users::dashboard', ['as' => 'dashboard']);

然后/dashboard路由仍然有效,但当您导航到/dashboard/account时,它会显示找不到Users:account。当你导航到/dashboard/news/11时,会说找不到主页::索引。

任何超出一级路由的行为都是错误路由。在用户控制器中有一些称为dashboard、accountsettings和newsstory($storyid(的函数,但后两者从未被调用。我可以通过分解代码中的URL来获得分段数据,但这并不能解决路由问题。

更改要分组的仪表板条目:

$routes->get('/', 'Home::index');
$routes->group('/dashboard', function($routes)
{
$routes->get('/news/(:num)', 'Users::newsstory/$1');
$routes->get('/account', 'Users::accountsettings');
$routes->get('/', 'Users::dashboard', ['as' => 'dashboard']);
});

同样的事情也会发生/dashboard/路由很好,其他两个创建文件未找到错误,在/dashboard/account的情况下查找\App\Controllers\dashboard::account。

我哪里错了——有人能告诉我吗?整个开发工作都被卡住了,直到我能解决这个问题!

问题已解决。不幸的是,我不知道确切的答案,但它一定是从某个预发布版本遗留下来的。我开始用4.0.0字母编码这个网站,并在每次发布时更新了基本代码。

然而,我已经创建了一个新的CI4.0.4项目,并将我的所有代码移到其中,更新了配置以反映我以前的内容,现在一切都正常工作。这证明了我的代码是好的,它一定只是框架代码中的某个地方的一个bug。

现在,所有这些都已提交到GIT回购中,并在最终服务器上找到工作。

相关内容

  • 没有找到相关文章

最新更新