www.example.com/alicia
같은 URL을 달성하기를 원한다. 앨리 시아는 클래스 이름이나 메소드 이름이 아니라 URL에 데이터를 전달하는 것과 같은 어떤 클래스와 나는 이것에 접근하고자한다. 추가 처리를 위해 사용하고 싶습니다. 어떻게 사용할 수 있습니까? 미리 감사드립니다.어떻게 codeigniter에서 URL을 라우팅 이런 종류의 달성
답변
이미 작동하는 기존 URL을 손상시키지 않으므로 까다로울 수 있습니다.
Apache를 사용하는 경우 일부 이름이 아닌 각 컨트롤러를 제외하도록주의를 기울이는 mod_rewrite 규칙을 설정할 수 있습니다.
또는 기본 컨트롤러에 remap method을 만들 수 있습니다.
class Welcome extends CI_Controller
{
public function _remap($method)
{
echo "request for $method being handled by " . __METHOD__;
}
}
는 요청 된 $ 방법을 검토 혹은 당신이 원하는 것을 결정하는 $ _SERVER [ "REQUEST_URI"]를보고하는 방법으로 로직을 작성할 수 있습니다. 이 작업은 일일이 조금 까다 롭지 만 시작할 수있는 좋은 방법 일 것입니다.
다른 URL과 구분하기 위해 어떤 방법을 생각해 볼 수 있다면 routing functionality of codeigniter을 사용하고 routes.php 파일에서 이러한 이름을 가리키는 패턴 일치 규칙을 처리하는 컨트롤러로 정의 할 수 있습니다 그들.
나는 default_controller가 이것의 한 요소라고 믿는다. 실제로 controller :: method 클래스에 해당하는 모든 컨트롤러/메소드 상황은 해당 controller :: 메소드에 의해 처리되어야합니다. 일치하지 않는 모든이, 저는 믿습니다, 당신의 default_controller에 할당됩니다
$route['default_controller'] = 'welcome';
사용할 수 CodeIgniter는 내장 된 라우팅, 파일 route.php
이 당신의 config
폴더에 있습니다. 이
을 추가 할 수 있습니다 : 다음
$route['alicia'] = 'welcome/index/something';
$route['alicia/:any'] = 'welcome/index/someotherthing/$1';
를 컨트롤러에, 당신은 단지 같은 함수 생성 예를 welcome
을 위해 :
public function index($page = null){
if($page=='something'){
// do what you need to do, for example load a view:
$this->load->view('allaboutalicia');
}
elseif ($page=='someotherthing'){
// here you can read in data from url (www.example.com/alicia/2017
$year=$this->uri->segment(2); // you need to load the helper url previously
}else{
// do some other stuff
}
}
코멘트 후 편집 : 당신의 URI 세그먼트가 사용자 이름과 같은 변수를 나타내는 경우에 대비
, 다음 www.example.com/user/alice
같은 URI 체계를 사용하고 같은 경로를 만들어야합니다 컨트롤러에서 다음
$route['user/:any'] = 'welcome/index/user';
welcome
public function index($page=null){
if($page=='user'){
// do what you need to do with that user
$user=$this->uri->segment(2); // you need to load the helper url
}
else{
// exception
}
}
이 라우팅 방법에는 라우팅하려는 각 이름마다 고유 한 규칙이 필요합니다. 확실하지는 않지만 OP가 지정한 임의의 이름에 대해 작동 할 수있는 무언가를 찾고 있다는 느낌이 들었습니다. twitter.com/username과 같은 종류 –