我已经探讨了很多关于这方面的问题和文章,但我找不到如何做到这一点。
我正在做一个网站,提供手机、平板电脑、电视等多种产品的规格说明。
控制器.规格(创建和显示所有产品的规格)
方法-显示(获取所选模型的详细规格和显示)
方法索引(列出存储在表中的所有模型的名称。这里是我构建锚链接的地方)
Display方法采用三个参数(1、2、3)。
1-产品类型(电话、平板电脑、电视等)
2-型号鼻涕虫(iphone-6,galaxy-tab-s3,bravia-kdl-50w800d等)
3-型号ID (1、4、13等)
我的URL现在是这样的:
localhost/sitename/specs/display/phones/iphone-6/1
localhost/sitename/specs/display/tablets/galaxy-tab-s3/4
localhost/sitename/specs/display/tv/bravia-kdl-50w800d/13
我想要实现的是如下所示的URL:
localhost/sitename/iphone-6
localhost/sitename/galaxy-tab-s3
localhost/sitename/bravia-kdl-50w800d
我不介意重构我的表/控制器/方法或其他任何东西,如果这可以用任何方式实现。
谢谢你的阅读.
编辑:
Route.php
$route['default_controller'] = 'Specs/index';
$route['404_override'] = 'Errors/show_404';
$route['translate_uri_dashes'] = FALSE;这就是我如何构建锚链接(view_file->index.php,从Index方法调用):
<?php
foreach model(in the table)
echo anchor(specs_controller.display_function.product_type.model_slug.model_id, model_name);
end foreach
?>发布于 2018-07-10 13:05:55
我可以在route.php中使用下面的代码获得所需的URL。唯一的问题是,我无法使'urlController/urlMethod‘在函数中返回一个值,该值可以分配给$result变量。
$route['(:any)'] = function ($1)
{
$result = 'urlController/urlMethod/'.$1;
return $result;
};我不知道该怎么做。有人能建议我如何称呼'urlController/urlMethod‘吗?
发布于 2018-07-10 13:28:47
您可以通过CodeIgniter URI路由来实现它。考虑
localhost/sitename/galaxy-tab-s3
映射到
localhost/sitename/specs/display/tablets/galaxy-tab-s3/4
而且,在这种情况下,模型id i.4相对于银河选项卡s3是静态的,因为在简化的s3中没有提到任何这样的Id。
我的理解是,对于每个URL localhost/sitename/__iphone-6,,您需要三个关于字符串'iphone-6'的详细信息。即产品类型、型号-段塞、型号标识。一种方法是写一些类似的东西
$route['sitename/(:any)'] = 'routingController/commonRoutingMethod/$1';在这里,创建一个新的routingController,并将一些逻辑写入commonRoutingMethod()方法,该方法接受iphone-6这样的字符串,并获取它的所有三个细节(产品类型、模型id等),然后通过使用
header('Location: http://localhost/sitename/specs/display/$productType/$modelSlug/$modelId/');注意:在routes.php中使用regex匹配可能有更多的前向方式,因为您根据产品类型和模型id (如p_iphone-6_1或t_galaxy-tab-s3_4 )创建字符串的不同结构。
发布于 2018-07-16 06:41:24
请使用下面的路由代码,以实现它。
localhost/sitename/specs/display/phones/iphone-6/1
localhost/sitename/specs/display/tablets/galaxy-tab-s3/4
localhost/sitename/specs/display/tv/bravia-kdl-50w800d/13
localhost/sitename/iphone-6
localhost/sitename/galaxy-tab-s3
localhost/sitename/bravia-kdl-50w800d
$route['(:any)'] = 'specs/display/$1/$1/$1';如果你需要帮助,请告诉我。
https://stackoverflow.com/questions/51262040
复制相似问题