2012-10-14 3 views
0

튜토리얼에 따르면, 응용 프로그램/컨트롤러/pages.php이는 "홈"-page 작동컨트롤러 및 경로

class Pages extends CI_Controller { 

    public function view($page = 'home') 
    { 
     if(! file_exists('application/views/pages/'.$page.'.php')) 
     { 
      // Whoops, we don't have a page for that! 
      show_404(); 
     } 

     $data['title'] = ucfirst($page); // Capitalize the first letter 

     $this->load->view('templates/header', $data); 
     $this->load->view('templates/nav', $data); 
     $this->load->view('pages/'.$page, $data); 
     $this->load->view('templates/aside_right', $data); 
     $this->load->view('templates/bottom', $data); 
    } 
} 

을 통해 정적 페이지에 대한 모든 요청을 처리 할 수 ​​있습니다,하지만 난 돈 보기/페이지/약 호출 할 수있을 것 같습니다.

약 페이지에 대해 별도의 컨트롤러를 만들려고했습니다. 그것은 효과가 있지만 다소 잘못되었습니다.

응용 프로그램/컨트롤러/

class About extends CI_Controller { 

    public function index() 
    { 
     $this->load->view('templates/header'); 
     $this->load->view('templates/nav'); 
     $this->load->view('pages/about'); 
     $this->load->view('templates/aside_right'); 
     $this->load->view('templates/bottom'); 
    } 
} 

about.php 나는 또한 내 htaccess로 파일 또는 경로 파일에 문제가 있습니다. 위에서 작성한 About 컨트롤러를 사용하면 domain.com/index.php/about을 입력하여 페이지로 이동할 수 있습니다. 나는

이 좋아하는 것을 내 routes.php의입니다 domain.com/about 등 싶습니다 :

$route['about'] = 'about'; 
$route['(:any)'] = 'pages/view/$1'; 
$route['default_controller'] = 'pages/view'; 

내 htaccess로 :

RewriteEngine on 
RewriteBase/
# Hide the application and system directories by redirecting the request to index.php 
RewriteRule ^(application|system|\.svn) index.php/$1 [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [QSA,L] 

답변

2

이미 말했듯이, 당신 about 페이지에 다른 컨트롤러를 사용할 필요가 없습니다. 문제는 routes.php입니다.

$route['about'] = 'about'; 
$route['(:any)'] = 'pages/view/$1'; 
$route['default_controller'] = 'pages/view'; 

이렇게하면 "about"이라는 컨트롤러를 검색하고 컨트롤러를 찾지 못합니다. 첫 번째 줄을 지우면 :

$route['(:any)'] = 'pages/view/$1'; 
$route['default_controller'] = 'pages/view'; 

그래야합니다. 이 경우 페이지를 요청할 때 예를 들어 about과 같이 pages/view/about을 호출합니다. 여기서 pages은 컨트롤러이고 view은 함수이며 about은 함수에 전달되는 인수입니다 (기본값 $page = home 대체).

나는 또한 당신의 논리에 또 다른 오류를 발견했다. 당신이 쓴

이것은 "홈"페이지에서 작동하지만보기/페이지/약 호출 할 수없는 것 같습니다.

view/pages/about으로 전화하지 않아도됩니다. pages/view/about에 전화해야합니다. 구문은 항상 Controller/Function/Variable1/Variable2/Variable3과 같습니다. 따라서 routes.php$route['(:any)'] = pages/view/$1 규칙이있는 경우 http://yourdomain.com/index.php/pages/view/about 또는 http://yourdomain.com/aboutabout 페이지를 볼 수 있어야합니다.

+0

+1 그리고 url은'domain/pages/about'이어야합니다. –

+0

고맙습니다. 그래도 URL에 문제가있어 domain.com/about 또는 domain.com/about/about – estrar

+0

@estrar가 아닌 domain.com/index.php/about/을 통해서만 접근 할 수 있습니다. 그러면 오류가 ' .htaccess'. 작동하는'.htaccess'를 찾으십시오 : http://codeigniter.com/user_guide/general/urls.html – Zagorax

관련 문제