CodeIgniter 4 中控制器/方法的 URL 别名

问题描述 投票:0回答:1

在 CodeIgniter 3 中,我可以在 Config/Routes.php 文件中执行此操作:

$routes->get('Net_Price', 'SomeController::SomeNonIndexMethod');
“Net_Price”是一个别名(因为缺乏更好的术语)。访问此控制器/方法的 URL 是: www.example.com/Net_Price(我什至可以在别名中使用大写字母。)

我想在 CodeIgniter 4 中做到这一点。这可能吗?

我得到的最接近的是如果我将以下路由放入Config/Routes.php(CI4)。

$routes->match(['get', 'post'], 'SomeController/SomeNonIndexMethod', 'SomeController::SomeNonIndexMethod', ['as' => 'Net_Price']);
然后我可以在控制器的 SomePrecedingMethod 中执行
redirect()->route('Net_Price')
(而不是
redirect()->**to**('Net_Price')
重定向()->to 甚至可以做什么?)。并且浏览器正在调用正确的 URL。但是,路由到的 SomeNonIndexMethod 方法还需要来自 SomePreceedingMethod 方法和/或视图的 POST 数据。无论如何,目前我可以路由到别名或获取发布数据而无需重定向。请不要引用redirect()->withInput()——我已经尝试过,并且似乎只有在您尝试返回到上一页/方法时才有效。

您的解决方案的示例将是最有帮助的。

url alias codeigniter-4
1个回答
0
投票

@Antony 是正确的,他的评论就是答案。

澄清一下:CI3 代码实际上是

$route['Net_Price'] = 'SomeController/SomeNonIndexMethod';
在重新格式化 CI4 代码时——特别是添加 get、post 或 match 部分——我感到很困惑,我的 实际路线代码就像
$routes->match(['get', 'post'], 'SomeController/SomeNonIndexMethod', 'SomeController::SomeNonIndexMethod', [as => 'Net_Price']
基本上,我已经意识到,为了调用路线代码中的方法,我必须在每个路线中同时使用
SomeController/SomeNonIndexMethod
SomeController::SomeNonIndexMethod
。事实上,“斜线位”可以是您想要的任何内容——“双冒号”d 位”(CI3 中未使用)是实际的控制器方法参考。

最后,‘slashed-bit’(无论是否有斜线)是 CI4 中 View 需要引用的内容。

© www.soinside.com 2019 - 2024. All rights reserved.