标签: codeigniter-routing

Codeigniter 路由和 REST 服务器

我正在尝试为我的 API 实现以下 URL(我正在使用 Codeigniter 和 Phil Sturgeon 的REST 服务器库):

/players            -> refers to index method in the players controller
/players/rookies    -> refers to rookies method in the players controller
Run Code Online (Sandbox Code Playgroud)

我不希望 URL 带有尾随“索引”

/players/index
Run Code Online (Sandbox Code Playgroud)

当我像这样定义路由时,这根本没有问题:

$route['players'] = 'players/index';
Run Code Online (Sandbox Code Playgroud)

一切都按预期进行。

我的问题是我需要额外的 URL 段,如下所示:

/players/rookies/limit/10/offset/5/key/abcdef
Run Code Online (Sandbox Code Playgroud)

上面的示例有效,但以下示例无效:

/players/limit/10/offset/5/key/abcdef
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:显然我的控制器中{"status":false,"error":"Unknown method."} 没有方法。limit

我如何设置我的routes.php配置文件才能使这些URL正常工作?

任何帮助深表感谢!

php rest codeigniter codeigniter-routing codeigniter-restserver

4
推荐指数
1
解决办法
2万
查看次数

在Codeigniter中的路线 - 找不到404页面

谁能告诉我,问题出在哪里?

这是我的控制器

class Support extends CI_Controller {
    public function __construct()
    {
        parent::__construct();
        $this->load->model('support_model');
        $urlarray = array("index","delete");
        if(!in_array($this->uri->segment(2),$urlarray)){
            $this->viewticket($this->uri->segment(2));
        }
    }

    public function viewticket($id){
        if(!empty($id)){
            $this->load->view('templates/logged_header');       
            $this->load->view('support/view');
            $this->load->view('templates/footer');
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的routes.php

$route['default_controller'] = "welcome";
$route['benefits'] = 'welcome/benefits';
$route['faqs'] = 'welcome/faqs';
$route['distributors'] = 'welcome/distributors';
$route['contact'] = 'welcome/contact';
$route['purchase'] = 'welcome/purchase';

//login routes
$route['login'] = 'login/index';
$route['logout'] = 'login/logout';

$route['404_override'] = '';
Run Code Online (Sandbox Code Playgroud)

localhost/ciproj/support/hello-world给我404 Page Not Found错误

如果我使用exit;$this->load->view('templates/footer');,页面显示空白页面.

我在支持相关的路线中没有任何东西,而且其他方法都有效吗?我在路线中缺少什么?

谢谢您的帮助.

php codeigniter codeigniter-2 codeigniter-routing

4
推荐指数
1
解决办法
3万
查看次数

Codeigniter URL:如何在URL中显示id和文章标题

请参阅以下链接结构

http://stackoverflow.com/questions/10672712/voting-system-like-stackoverflow
Run Code Online (Sandbox Code Playgroud)

在上面的链接中,10672712我猜是问题ID,因为如果您检查以下链接,您将到达上面相同的位置:

 http://stackoverflow.com/questions/10672712
Run Code Online (Sandbox Code Playgroud)

现在,如果您使用上述链接,那么您会注意到在浏览器的地址栏中链接会自动在问题ID后面添加问题标题(作为slug),它就像上面的第一个链接一样.

我正在尝试使用Codeigniter创建基于文章的网站.为了显示特定的文章,我有一个控制器,如下所示:

function articles(){


    $id=$this->uri->segment(3);

    $this->load->model('mod_articles');
    $data['records']=$this->mod_articles->list_articles($id);
    $this->load->view('view_article',$data);
     }
Run Code Online (Sandbox Code Playgroud)

我的型号:

  function list_articles($id)

       $this->db->select('*');
        $this->db->from('cx_article');
        $this->db->join('cx_author', 'cx_author.author_id = cx_article.author_id');
        $this->db->where('article_id', $id); 
        $query = $this->db->get();

       if ($query->num_rows() > 0)
        { return $query->row_array();
        }
        else {return NULL;}

    }  
Run Code Online (Sandbox Code Playgroud)

如果你点击这个 - > localhost/my_base_url/my_controller/my_funtion/article_id然后我的文章出现了.现在我想要实现的是如果有人点击localhost/my_base_url/my_controller/my_funtion/article_id我想在article_id之后自动添加文章标题为slug.(就像我上面给出的例子)

你能告诉我怎么做吗?

谢谢:)

PS在我的数据库表中,我有一个名为的列article_slug,其中我将我的文章标题存储为slug(例如:voting-system-like-stackoverflow).

codeigniter codeigniter-2 codeigniter-routing

3
推荐指数
1
解决办法
5599
查看次数

CodeIgniter 2.x中的数据库驱动路由

我正在创建一个网站,其中有很多路由需要添加到路径文件(800+) - 显然我不想手动将这些路由逐个添加到路由配置文件中.

任何人都可以建议最佳做法让我的路由从数据库自动加载.是否有合适的库/帮助程序将执行适用于2.x版本的此任务

例如..

$route['apple'] = 'brands/index';
$route['blackberry'] = 'brands/index';
$route['htc'] = 'brands/index';
$route['samsung'] = 'brands/index';
Run Code Online (Sandbox Code Playgroud)

这些只是我要添加到路线中的几个品牌 - 但是有数百个,所以我想从数据库加载而不是手动输入这些.另外 - 这种方法会有什么影响从数据库加载它们的现场性能?

我正在使用Codeigniter v2.1.3

php codeigniter codeigniter-routing

2
推荐指数
2
解决办法
6359
查看次数

新控制器在Codeigniter中不起作用

我正在使用CodeIgniter.我设置我的默认控制器是' cart'.我在Controller文件夹中添加了一个名称为的文件admin.php.admin.php有以下代码,

<?php

    class Admin extends CI_Controller {

        public function __construct()
        {
            parent::__construct();
        }

        public function index()
        {
            echo 'Hello World!';
        }

    }

?>
Run Code Online (Sandbox Code Playgroud)

如果我像http://lo...host/codeigniter/admin手段那样给网址,它显示404 Not Found.如果我给http://lo...host/codeigniter/,它显示购物车页面是好的.

如果我将routes.php中的默认控制器更改为" admin ",则http://lo...host/codeigniter/显示"Hello World!"

php codeigniter http-status-code-404 codeigniter-routing

1
推荐指数
1
解决办法
6355
查看次数

CodeIgniter检测是否使用了默认控制器路由

在CodeIgniter中,有没有办法知道用户是否被发送到默认控制器,因为路由将它们发送到那里,或者因为用户实际在URL栏中输入了该控制器.

换句话说,---/home和---.com都可以将你发送到'home'控制器,因为你已经设置好了

$route['default_controller'] = 'home';

但只有---.com/会调用CI来获取"default_controller"所以,我该如何检测到这个?如果只有一个布尔函数可以告诉我这个.

php codeigniter codeigniter-routing

1
推荐指数
1
解决办法
1766
查看次数

Codeigniter:我想为用户创建用户名时创建用户URL

我想在用户注册用户名mysite.com/username时为我的用户创建这种URL

我在这个网站上搜索了很多帖子,我看到人们这样做就像mysite.com/user/username

我想摆脱用户,直接进入mysite.com/username

最好的方法是什么?

php mysql codeigniter codeigniter-routing

0
推荐指数
1
解决办法
1334
查看次数