繁体   English   中英

如何在 url 中使用类别名称而不是类别 ID?

[英]How do I use the category name rather than the category id in my url?

我正在使用 CodeIgniter 框架,并且无法弄清楚如何让我的 url 显示类别名称,但我的查询仍然引用类别 ID。

我有一个名为作业的 controller 设置。 url 的结构是“example.com/jobs/listings/category_id”示例:“example.com/jobs/listings/3”,其中 3 是“软件”的类别 ID。

我宁愿 url 说“example.com/jobs/listings/category_name”示例:“example.com/jobs/listings/software”。

我遇到的问题是“jobs”表保存了job所属的category_id,而不是category_name。 我有一个单独的表,其中仅包含类别 ID 及其名称。 我不知道如何 A.) 写我的查询和 B.) 做一个 SEO 友好的 url 结构。

我当前的查询类似于“SELECT * FROM jobs WHERE cat_id = 3;

另外,我不确定是否应该在 .htaccess 文件中使用 mod_rewrite,或者是否应该在 CodeIgniter 中使用 routes.php 文件。

任何帮助将不胜感激!

-谢谢

只需加入您的另一张桌子。

SELECT * FROM jobs JOIN categories ON jobs.cat_id = categories.id WHERE categories.name = ?;

如果您还没有,请确保在类别名称上放置一个唯一键。

mod_rewrite对应用程序路由来说是一个糟糕的解决方案,无论如何在这里也无济于事。 坚持你的框架提供的任何东西。

在 URL_title() 上查看http://codeigniter.com/user_guide/helpers/url_helper.html

使用 url_title() function 转换类别名称,确保没有重复项。

当调用 url 时,使用简单的 where 语句从 model 中查找您的类别

例如

$this->db->from('categories');
$this->db->where('name', $url);
Etc...

使用它来加载您的页面标题等,然后使用返回的 categoryid 在您的工作表上进行查找。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM