0
전 동적 인 웹 사이트를 가지고 있으며 메뉴를 만들고 백엔드에서 모든 것을 동적으로 페이지합니다. 지금 내가 작성하는 당신에게 URL의 순서를 보여주지 :URL의 n 레벨을 받아들이도록 CI의 경로 구성
http://localhost/occ/level1/level2/....leveln
기본적으로 수준 1, 레벨 2, ... leveln 특정 메뉴 등 가정의 수준 (계층 구조)입니다/contact_section/contact_us 이제 관리자는 여러 페이지를 만들 수 있고 원하는만큼의 수준의 메뉴를 만들 수 있으므로 URL 로직이 부모에서 최대 부모까지 이어지고 URL이 끝날 때까지 계속됩니다. 내가 이름을 일반 컨트롤러에 전달 오전, 기본적으로 db 쿼리를 실행 이름을 가져옵니다 페치 모든 데이터를 한 후 여기에 페이지를 표시합니다 내 경로입니다 :
$route['default_controller'] = 'Home';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['Admin'] = 'Admin';
//$route['(:any)'] = 'Home/pages/$1';
$route['(:any)/(:any)'] = 'Home/pages/$1/$2';
//$route['(:any)/(:any)'] = 'Home/pages/$1';
이제 위의 경로는 두 가지 문제가 있습니다
- 의 나는 두 가지 수준이 URL이 있다고 가정하자 그래서 경로 $ 경로 [ ' (: any)/(: any) '] ='홈페이지/페이지/$ 1/$ 2 '; 이제는 페이지 컨트롤러가 이름을 받아들이고 내 경우에 페이지를 표시합니다. URL에있는 성을 컨트롤러에 보내고 싶지만 항상 $ 1을 말하거나 $ 1을 말할 수 있습니다.
- 어떻게 일반화 할 수 있습니까? URL에 슬래시로 구분 된 n 개의 이름을 가질 수있는 것처럼 URL의 성을 컨트롤러에 전달하여 모든 경로를 허용하도록 경로를 구성하는 방법. 왜냐하면 현재 경로에 정의 된 다른 레벨의 URL이 있으면 페이지가 표시되지 않기 때문입니다! 당신이 CI (3)를 사용하는 경우
/설정/routes.php
응용 프로그램/설정/Home.php
응용 프로그램처럼 regular expressions을 사용할 수 있습니다 CI 3.X를 사용하고 있는데, 유효하지 않은 인자를 받았다 implad() –
이'$ params = implode (","$ param);을'$ params = (count ($ param))> 1)? implode (",", $ param) : $ params;' – elddenmedio
문자열을 폭발 시켰습니다. 하나가 아닌 두 개의 속성이 반환됩니다 ..... n –