我正在尝试为我的 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
谁能告诉我,问题出在哪里?
这是我的控制器
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');,页面显示空白页面.
我在支持相关的路线中没有任何东西,而且其他方法都有效吗?我在路线中缺少什么?
谢谢您的帮助.
请参阅以下链接结构
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).
我正在创建一个网站,其中有很多路由需要添加到路径文件(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
我正在使用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!"
在CodeIgniter中,有没有办法知道用户是否被发送到默认控制器,因为路由将它们发送到那里,或者因为用户实际在URL栏中输入了该控制器.
换句话说,---/home和---.com都可以将你发送到'home'控制器,因为你已经设置好了
$route['default_controller'] = 'home';
但只有---.com/会调用CI来获取"default_controller"所以,我该如何检测到这个?如果只有一个布尔函数可以告诉我这个.
我想在用户注册用户名mysite.com/username时为我的用户创建这种URL
我在这个网站上搜索了很多帖子,我看到人们这样做就像mysite.com/user/username
我想摆脱用户,直接进入mysite.com/username
最好的方法是什么?