CI 묻고 답하기

제목 CI4 Routes 관련 문
카테고리 CI 4 관련
글쓴이 코드이그버그잡이 작성시각 2024/07/17 16:56:27
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 1775   RSS

CI 초보자입니다. 라우터에 대한 공부중 

다른쪽 튜터리얼 보고 따라하다가 오류가 생겨 문의드립니다.

 

Routes.php 페이지

$routes->get('/', 'Home::index');

$routes->get('(:segment)', 'Pages::view/$1');

 

app/controllers/Pages.php 페이지

    public function view($page = 'home')

    {

        $data['title'] = ucfirst($page); 

        return view('templates/header', $data)

            . view('pages/' . $page)

            . view('templates/footer');

    }

 

 

View/pages/about.php

~~~~

 

형태로 되어 있다고 치면

접근하는 url이 

localhost:8080/pages/about

형태로  접근이 될수 있나요? 현재 접근 시도하면 404 에러가 나오는데 원인을 모르겠습니다. 

무엇을 수정해봐야 할가요?

 

단순히 생각해보면 

Routes.php 에서

$routes->get('pages/(:segment)', 'Pages::view/$1');

이렇게 작성되어야  localhost:8080/pages/about 로 접근 가능할것 같고

위처럼 수정하니 접근도 가능합니다 그러면 위에 방식은 어떨때 사용하는거죠?

 

 

 

 

 다음글 $this->include() 에 대한 질문입니다... (1)
 이전글 CI 3.0.5 버전에서의 세션 오류 (2)

댓글

cilove / 2024/07/17 17:38:57 / 추천 0

ci4 버전이 올라가면서 컨트롤러 자동 라우팅 기능이 기본 꺼짐(Routes.php 에 설정 안하면 라우팅 안해도록)으로 설정 되었습니다.

app/Config/Routing.php 파일의 

public bool $autoRoute = false;

public bool $autoRoute = true;

로 바꿔보세요

코드이그버그잡이 / 2024/07/18 08:25:53 / 추천 0
public bool $autoRoute = true; 이렇게 진행했는데도 /pages/about로는 접근이 되지 않고 404 가 나오네요 다른것도 있을까요?
코드이그버그잡이 / 2024/07/18 08:29:09 / 추천 0

찾아보니 app/Config/Routing.php에도 public bool $autoRoute = false; 있고

system/Config/Routing.php에도 public bool $autoRoute = false; 이 있는데 2개는 뭐가 다른걸가요? 물론 2개다 true로 해보았지만 안됩니다.

cilove / 2024/07/18 10:42:51 / 추천 0
컨트롤러 예시에 어바웃 지정이 없는데 지정하시면 나올듯 합니다.
(무조건 뷰 메소드 타려면 라우터에서 잡아주는게 맞습니다)

시스템 폴더는 만지는게 아닙니다!
PureAni / 2024/07/28 14:23:30 / 추천 0

:segment 는 / 가 나오지 전까지만 확인합니다.

그렇기에 $routes->get('(:segment)', 'Pages::view/$1'); 코드는 samples.kr/pages 인 경우에만 해당합니다.

/pages/about 이 되려면, $routes->get('(:segment)/:segment', 'Pages::view/$1'); 로 하시면 적용이 될겁니다.

예시에서 세그멘트가 2개인경우만 있어서, 2개인 경우에는 위와 같이 하면 동작할거라 생각합니다.

만약에 세그멘트가 여러개가 나온다면, /:any 로 하시면 아마 될겁니다.