CI 묻고 답하기

제목 CI 중복 제거 함수 질문
글쓴이 학학이 작성시각 2016/09/06 17:30:29
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 18301   RSS

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

컨트롤러 내부의 다른 컨트롤러 호출은 $this->default_views()라고 써야합니다.

위 방식 보다 __construct()에 배열을 선언하시고 쓰는게 좋습니다.

function __construct()

{

    $this->arr = array('a'=>'1');

}

컨트롤러의 메소드 내부에서 $this->arr 로 사용하면 됩니다. 

/ 2016/09/06 17:38:06 / 추천 0

hook을 이용한 layout 구성을 하시면 좀 더 편하게 원하시는 바를 달성하실 수 있습니다.

내용을 보니 대략적으로 컴포넌트를 뷰로 만들어서 리턴해주려 하는거 같은데 위와같이 리턴하도록 하려면

3번째 인자에 true를 넣으면 뷰를 데이터처럼 사용 하실 수 있습니다.

학학이 / 2016/09/07 08:46:55 / 추천 0

@변종원 감사합니다. 해결방안과 더 좋은 방법을 알게 되었네요.

@닉 hook 한번 알아보고 해보겠습니다. 감사합니다.