제목 | CI4 locale을 위한 Route 설정 관련. | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 쉐굴 | 작성시각 | 2019/09/30 10:37:41 |
|
|||
안녕하세요 선배님들. 일 자체가 옛날 코드를 너무 많이 보다보니 발전이 없는 것 같아서 개인 프로젝트에 언어를 php7로 올리고 프레임워크도 최신버전으로 바꾸자해서 CI4로 바꾸어서 공부중에 있습니다. 근데 CI4 자체가 릴리즈 된 지 얼마 안되서 정보가 거의 없더군요.나름 문서를 열심히 보고 있지만 딸리는 언어능력 때문에 조금 어려운 점이 있네요. 현재 저는 다국어 설정 방법을 공부하고 있습니다. https://codeigniter4.github.io/userguide/outgoing/localization.html 상기 링크에서 나와 있는데로 따라하고 있는데 $negotiateLocale 값을 통한게 아닌 Route 값을 통해서 다국어를 설정하고 싶어서 그에 맞게 Routes.php를 수정중에 있습니다. 문서에 보면, $routes->get('{locale}/books', 'App\Books::index'); 이런식으로 예제가 되어 있고 {locale} 이라는 설정을 통해 /kr/books 로 접속을하면 kr이라는 locale값이 자동으로 셋팅이되고 Books 컨트롤러 index로 가는걸로 이해했습니다.저도 그래서 /en/, /kr/ /ch/ 등의 locale 값들을 여러 컨트롤러에 전달 하고 싶어서 여러가지 셋팅을 하고 있는데 잘 안되네요. 제가 원하는 접속 방법은,/kr/home/index, /en/home/test/, /jp/main/index, /ch/main/test2 이런식으로 {locale}/Controller/Method URL을 입력하면 /Controller/Method로 연결되면서 locale 값이 넘어가는 것이였는데, 여러 방법으로 설정값을 바꾸어봐도 잘안됩니다 ㅠㅠCI3를 사용 할 때도 Route쪽은 잘 사용을 안해봐서 그런지 몰라도 방법이 틀린건지 이해를 잘못한건지 모르겠네요. 어찌 저찌 하다보니 제 나름 찾은 방법은... $routes->get('{locale}/home/(:any)', 'Home::$1'); $routes->get('{locale}/main/(:any)', 'Main::$1');이렇게 Controller 명을 고정 시키고 Method 명만 달리하니까 동작은 잘 됩니다만, Controller가 늘어나면 늘어날 수록 이걸 다 입력해야하나? 라는 생각이 드네요. 그래서 $routes->get('{locale}/(:any)/(:any)', '$1::$2'); 이런식으로 변경도 해보았는데 이상하게 이건 동작을 안해서 무엇이 문제인지 몰라 아직도 끙끙 되고 있습니다. 선배님들 중에 혹시 이 부분에 대해서 잘 알고 계시는 분이 계시면 조언을 좀 부탁드립니다. 오늘도 좋은 하루되세요. 고맙습니다.
|
|||
다음글 | CI 마이크로 서비스 가능여부? (3) | ||
이전글 | [게시판]Controller 페이지에서 값 두개 넘기는... (4) | ||
변종원(웅파)
/
2019/09/30 12:18:38 /
추천
1
|
쉐굴
/
2019/09/30 13:27:19 /
추천
0
변종원님 답변감사합니다. 말씀해주신 링크에 예제를 참고해서 아래와 같이 코드를 만들어 보았는데 동작을 안하네요. $routes->add('{locale}/([a-z]+)/(:any)', '$1::$2'); 하지만 Controller를 고정 값으로 넣으면 또 동작합니다. $routes->add('{locale}/([a-z]+)', 'Home::$1'); 그래서 locale 값을 뺴고 $routes->add('products/([a-z]+)/(:any)', '$1::$2'); 로 넣고 URL은 /products/home/index 로 접속을 시도 해보았는데 이것도 접속이 안되네요... 뭔가 설정이 이상한 것 같은데 답이 안나오네요 ㅠㅠ 컨트롤러 서브디렉토리 설정이랑 이거랑 하루종일 삽질하는데 답답하네요 후... |
kasumil
/
2022/09/26 11:00:45 /
추천
0
이거 해결하셨나요? 해당 부분 적용하려고 합니다.
|
https://codeigniter4.github.io/userguide/incoming/routing.html#regular-expressions
이것을 응용해보세요. 조금만 변경하면 됩니다.