| 제목 | CI 중복 제거 함수 질문 | ||
|---|---|---|---|
| 글쓴이 | 학학이 | 작성시각 | 2016/09/06 17:30:29 |
|
|
|||
|
CI 개발 중 중복되는 View가 여러군데 있어서 이것을 하나의 함수로 만들고 이 함수를 재사용하는 방법으로 개발을 하려고 합니다.
function userList($page=1)
{
$data = array (
'top' => $this->layout['top'],
'left' => $this->layout['left'],
'bottom' => $this->layout['bottom'],
'page' => $page
);
$this->load->view('userList', $data);
}
function orderList($order_id=1)
{
$data = array (
'top' => $this->layout['top'],
'left' => $this->layout['left'],
'bottom' => $this->layout['bottom'],
'order_id' => $order_id
);
$this->load->view('orderList', $data);
}
위의 코드를
function userList($page=1)
{
$data = array_merge(
default_views(),
array (
'page' => $page
);
);
$this->load->view('userList', $data);
}
function orderList($order_id=1)
{
$data = array_merge(
default_views(),
array (
'order_id' => $order_id
);
);
$this->load->view('orderList', $data);
}
function default_views()
{
$views = array (
'top' => $this->layout['top'],
'left' => $this->layout['left'],
'bottom' => $this->layout['bottom'],
);
return $views;
}
위와 같이 default_views라는 배열 리턴 함수를 만들어서 3가지 공통되는 부분을 사용하려고 하는데 아무것도 나오지 않네요... 뭐가 문제일까요?
php CI는 초보이고 기존에 JS jQuery에서 $extend로 객체 확장하는 방법을 적용해서 중복 코드 제거 하려고 합니다. |
|||
| 다음글 | CI hooks 로 로그인 인증 체크하기 질문 (3) | ||
| 이전글 | 직접 작성한 컨트롤러 접속 시 404에러 문제입니다. (2) | ||
|
변종원(웅파)
/
2016/09/06 17:37:47 /
추천
0
|
|
닉
/
2016/09/06 17:38:06 /
추천
0
hook을 이용한 layout 구성을 하시면 좀 더 편하게 원하시는 바를 달성하실 수 있습니다. 내용을 보니 대략적으로 컴포넌트를 뷰로 만들어서 리턴해주려 하는거 같은데 위와같이 리턴하도록 하려면 3번째 인자에 true를 넣으면 뷰를 데이터처럼 사용 하실 수 있습니다. |
|
학학이
/
2016/09/07 08:46:55 /
추천
0
@변종원 감사합니다. 해결방안과 더 좋은 방법을 알게 되었네요. @닉 hook 한번 알아보고 해보겠습니다. 감사합니다. |
컨트롤러 내부의 다른 컨트롤러 호출은 $this->default_views()라고 써야합니다.
위 방식 보다 __construct()에 배열을 선언하시고 쓰는게 좋습니다.
function __construct()
{
$this->arr = array('a'=>'1');
}
컨트롤러의 메소드 내부에서 $this->arr 로 사용하면 됩니다.