CI 묻고 답하기

제목 rewrite .. 고민입니다.
글쓴이 스크림 작성시각 2009/08/21 16:55:49
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 27602   RSS
원래 사이트 .. 에대해서 이미 개발 한 것을 mvc 모델로 바꿔서 유지보수 쉽게하려고

지금 큰 마음먹고 codelgniter 로 오려고 하고 있는데

일단 잘한 판단인지가 의문이고. (수개월에 걸쳐서 이미 거의 90% 완성단계인 것을 옮긴다는게..)



옮긴다하더라도 싸이월드처럼.


minihp.cyworld.com/userId  식으로 rewrite 사용해서 프로그램을 사용해오고 있었습니다.

그런데 mvc 모델을 사용하면 그게 불가능 해지지 않나요~?

minihp.cyworld.com/className/ 식으로 사용해야할테니까요.


어떻게 하면 좋을가요~?
 다음글 ci 기반의 무료 게시판 있는지요? (4)
 이전글 프레임 워크 사용시 코드가 꼬이는게 고민입니다. MVC... (8)

댓글

emc / 2009/08/21 17:08:34 / 추천 0
rewrite쓰면 가능합니다.
mvc 는 개발방법이구요. 구현에는 문제 없습니다.
rewrite가 좀 어렵긴 하더군요.;;;
스크림 / 2009/08/21 17:26:37 / 추천 0

그럼 mihihp.cyworld.com/user_id/className/functionName/id 식으로 해야 하는 걸까요~?

아참 지금 제 상황이

그니깐 싸이월드 처럼.

minihp.cyworld.com/user_id 로 호출하면 프레임으로 되어있어서 그 안에서는
user_id 포함하지 않고

일반적으로 Ci 쓰듯이 쓰면 되는데....

문제는 user_id 호출 할때 이게 클래스 이름이 아닌데 클래스 인줄 알고 호출하거나. 혹은
클래스 네임하고 겹치는 아이디가 있을 경우 애매해져 버린다는 것입니다.;


클래스 네임중에 master 가 있구.
유저중에 master 가 있다면

minihp.cyworld.com/master 는 클래스 호출한게 아니라. 유저 아이디 호출한거라는걸.
어떻게 ci 에게 알려주죠?

변종원(웅파) / 2009/08/21 17:34:42 / 추천 0
고민하시는 내용에 대한 해답은 route에 있습니다.

매뉴얼 한번 읽어보시구요. http://codeigniter-kr.org/user_guide/general/routing.html


주소가 minihp.cyworld.com/master 라면
application/config/routes.php 파일에 아래와 같이 선언하여 사용하시면 됩니다.

$route[':any'] = "main/index"; // main controller의 index method 호출

정규표현식을 잘 구현한다면 더욱더 원할하게 사용하실 수 있습니다.
듬직이 / 2009/08/21 19:08:40 / 추천 0
저 같은 경우에는 _remap의 방법을 약간 응용해서 제작 했습니다. _remap으로 하면 클래스 내에 있는 함수 이름과 같은 아이디일 경우.. 오류가 발생할것 같아서..

function user_uri()
{
	$this->data['blog_id'] = $this->blog_model->get_blog_id($this->uri->segment(3, 0));
	if( $this->data['blog_id'] != FALSE)
	{
		$this->data['blog_uri'] = $this->uri->segment(3, 0);
		$method = 'index'; 
		$this->$method();
		return;
	}
	else
	{
		redirect('/auth/login');
		return;
	}
}

대충 이런식으로 제작해서 아이디가 있을 경우,  index 함수를 실행하고 그외의 경우에는 로그인 페이지로 보냈습니다.

그러니까...
http://sitename/userid  -> http://sitename/filename/user_uri/userid
이런식으로 rewite를 해서 사용하시면 됩니다.

functionName부터는 밀려서 사용하시면 되고요 ^^;

혼자서 생각해낸 방법이라 옮은 방법인지를 모르겠지만 참고 하세요..