CI是否可以首先检入控制器..如果找不到控制器,那么只检查路由规则?
我们想要的是,
我们有一个带有两个段的URL,即testctl / testmethod,现在我们想要1个动态URL,它也有2个段。因此,我们要设置路线规则,例如 $ route ['(:any)/(:any)'] = ctl / method / $ 1 / $ 2 。 由于此规则,所有包含2个细分的网址都会加载ctl / method / $ 1 / $ 2.
答案 0 :(得分:0)
如果方法为参数提供默认值,则可以避免使用路由规则。
public function testfunc($arg1 = FALSE, $arg2 = FALSE)
{
if($arg1)
{
echo "$arg1 ";
}
if($arg2)
{
echo "$arg2 ";
}
echo date("F j, Y, g:i:s a");
}
如果该方法位于Welcome
控制器中,则URL http://example.com/welcome
会生成仅包含日期的输出。
网址http://example.com/welcome/hello
生成
hello January 24, 2018, 9:39:08 am
网址http://example.com/welcome/hello/world
生成
hello world January 24, 2018, 9:39:08 am
网址http://example.com/welcome/0/world
生成
world January 24, 2018, 9:39:08 am
重点是该方法根据是否传递参数进行响应。
不需要为上述工作定义单一路线。
答案 1 :(得分:0)
答案是否定的。由于您选择的网址方案,您已经规避了Code Igniter中阻力最小的路径,如果不在某处编写更多代码,就无法摆脱这种阻碍。
如果你有其他规则属于该模式,那么你需要为它们定义路由,或者使用控制器开关智能地解析实际的URL,然后根据需要调用其他方法,然后再进入逻辑你的产品。
下一个想法听起来似乎不适合您,但其他解决方案可能涉及完全更改您的网址架构,使用domain/product/attribut_value/product_name
之类的明确术语,因此您的路线将为$route['product/(:any)/(:any)']
。< / p>