php - 是什么导致 CI4 中出现这种奇怪的路由问题
问题描述
我开始认为我在这里遗漏了一些非常简单的东西,但只是看不到它,尽管自 CI2 以来一直使用 PHP 和 CI 进行编码。我一直在思考这个问题将近 48 小时。
在 Mac 上的本地 MAMP 环境和共享托管平台上,以下路由代码行为异常。Allow_rewrite 已打开,并且 .htaccess 文件正在工作。该代码最初是使用 CI4 的 alpha 版本开发的,现在通过 Composer 更新到 CI4.0.4。
在 /config/routes.php 我有:
$routes->setDefaultNamespace('App\Controllers');
$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 时,说找不到 Home::index。
第一级路由之外的任何东西都是错误路由。在 users 控制器中有称为仪表板、帐户设置和 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/ 路由正常,其他两个 create file not found 错误,在 /dashboard/account 的情况下寻找 \App\Controllers\Dashboard::account。
我哪里错了 - 谁能告诉我?整个开发工作都被卡住了,直到我能解决这个问题!
富有的
解决方案
问题已解决。不幸的是,我不知道确切的答案,但它一定是从某个预发布版本的某个地方遗留下来的。我开始使用 4.0.0-alpha 对该站点进行编码,并在每个版本中更新了基本代码。
但是,我创建了一个新的 CI4.0.4 项目,并将所有代码移入其中,更新了配置以反映我以前的内容,现在一切正常。这证明我的代码没问题,它一定只是框架代码中某个地方的一个错误。
现在,所有内容都已提交到 GIT 存储库,并且也在最终服务器上找到。
推荐阅读
- android - 从活动更新嵌套回收器视图中的子适配器中的项目
- python - 将包含日期的列表添加到 PySpark Dataframe
- r - R woebin_plot 字幕或文本或标题
- continuous-integration - 使用 .nuspec 创建多目标 nuget 包
- c++ - 将无聊的 switch 语句列表转换为更短且令人愉悦的内容?
- palantir-foundry - Foundry Magritte 追加摄取如何处理数据源中已删除的行?
- python - Pycharm:有没有办法在不运行整个文件的情况下运行一段代码?
- android-studio - 请在项目结构中配置 Android SDK
- perl - 如何grep数组中未定义的值?
- python - 损失是在 MNIST 数字集上使用 Keras 的 NAN