gpt4 book ai didi

php - Codeigniter - 路由访问模型和数据库

转载 作者:行者123 更新时间:2023-11-28 23:41:54 24 4
gpt4 key购买 nike

我正计划在 codeigniter 3.0.3 中创建一个项目,并且我想使用如下所示的路由。

1) 。 www.mydomain.com/categoryNamehere
2) 。 www.mydomain.com/postNameHere

我的数据库中有一个单独的表来保存类别名称及其唯一 ID。
我想要的是当用户点击像 www.mydomain.com/xxxxx 这样的链接
1.首先检查类别表(xxxxx)
2. 如果不匹配,将它 (xxxxx) 发送给 post controller。
我如何在 Codeigniter 3.0.3 上实现它?
我尝试在 config/routing.php 中访问我的模型,我还尝试直接在路由页面中执行 mysql 代码(事件记录)。

最佳答案

要实现建议的 url 结构,我们必须创建一个中央调度程序来

  1. 分析请求的 URL。
  2. 会查询数据库以查找并显示类别。
  3. 如果找不到类别,它将尝试查找并显示文本帖子。

听起来像是 Controller 的工作。但是我们如何制作一个响应每个请求的 Controller 呢?借助通配符路由!

application/config/routes.php

$route['.*'] = 'default_controller';

现在每个请求,无论 URI 是什么,都将被路由到 Default_controller.php

但是我们如何在不知道调用什么方法的情况下编写 Controller 呢?有一种方法:内置 Controller 服务方法_remap

来自 the docs :

If your controller contains a method named _remap(), it will always get called regardless of what your URI contains.

所以我让自己幻想并为您创建一个概念 Default_controller:

application/controllers/Default_controller.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Default_controller extends CI_Controller {

// Pseudocode ensues
public function _remap()
{
// www.mydomain.com/(someTextHere)
$slug = $this->uri->segment(1);

$result = $this->load_data($slug);

echo $result;
}

private function load_data($slug)
{
// Trying to find a category
$category = $this->category_model->find($slug);
if($category !== false)
{
// Presumably loads view into buffer
// and returns it to the calling method
return $this->load_category($category);
}

Trying to find post
$post = $this->post_model->find($slug);
if($post !== false)
{
return $this->load_post($post);
}

// Neither category nor post found
show_404();
}

private function load_category($category)
{
// http://www.codeigniter.com/user_guide/general/views.html#returning-views-as-data
return $this->load->view("category", array("category" => $category), true);
}
}

注意:在新下载的 Codeigniter 3.0.3 上测试了这个答案

关于php - Codeigniter - 路由访问模型和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34229664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com