Php 如何让CodeIgniter忽略输入URL的最后一段,但仍然保留它?
我正在使用CodeIgniter从头开始构建一个用户配置文件部分。发生的情况是,用户将输入URL:Php 如何让CodeIgniter忽略输入URL的最后一段,但仍然保留它?,php,codeigniter,codeigniter-routing,Php,Codeigniter,Codeigniter Routing,我正在使用CodeIgniter从头开始构建一个用户配置文件部分。发生的情况是,用户将输入URL: www.somesite.com/profile/view/<USERNAME> 要获取用户名 谢谢你看我的问题 刘易斯。如果我理解正确: 声明你的函数如下 公共函数视图($var1,$username=”“){…} 其中必须填写$var1,但可以输入$username,其默认值为“” CI只使用您告诉它的内容,通过一个长URL,您可以选择所需的URI段。你可以制作精美的URL,只
www.somesite.com/profile/view/<USERNAME>
要获取用户名
谢谢你看我的问题
刘易斯。如果我理解正确: 声明你的函数如下
公共函数视图($var1,$username=”“){…}
其中必须填写$var1
,但可以输入$username
,其默认值为“”
CI只使用您告诉它的内容,通过一个长URL,您可以选择所需的URI段。你可以制作精美的URL,只使用一半的数据,而忽略其余的数据(例如:/view/(postid)/(postitle)
)@EHU Lewis你得到了404吗?@Jakub我认为OP无法通过404错误,这意味着他调用的是一个没有参数的控制器。这很奇怪,因为OPs站点结构www.somesite.com/profile/view/
我假设profile
是文件夹,view
是控制器。因此,他缺少view controller中的每个“”方法(404错误)。@Jakub OP正在寻找_remap(),因为他说他得到的是404。@EHU Lewis请注意,index()
方法不能有参数,请参阅我的编辑和链接答案。因此,无论您在index()
中拥有什么,都将其移动到新创建的函数show()
,并从该函数访问所有内容。@EHU Lewis,每当您通过site.com/profile/view/
index()
方法(函数)访问控制器时,都会首先或立即调用,不幸的是index()
不接受任何参数(我们正在讨论)。因此,您需要做的是,无论何时调用site.com/profile/view
,都可以将其重定向到site.com/profile/view/show
,其中show()
函数可以获取参数(比如$username
例如site.com/profile/view/show/pete123
),或者让routes.php处理它。问题是,无论什么时候没有,你都必须明确地处理它。@EHU Lewis,我又做了一次编辑!请让自己考虑一下在调用视图时不带参数会发生什么。
$currentURL = $this->uri->segment(3);
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class View extends CI_Controller { //can not belive that View is not reserved word
public function __construct() {
parent::__construct();
}
public function index() {
//index() function can not have parameters
//redirect('view/show');
//if no username is set, do default thing like show list of users
//load view or something
}
public function show($username = "") {
//this function can have parameters
//load views from here
$this->load->view('abc_view');
}
}