제목 | 헬퍼 선언의 위치 | ||
---|---|---|---|
글쓴이 | cleansugar | 작성시각 | 2011/03/29 16:36:43 |
|
|||
$this->load->helper('form'); 는 컨트롤러와 뷰 중 어디에 넣는 게 나은가요? | |||
다음글 | 이미지가 안 나와요.. (11) | ||
이전글 | 트랜젝션 후의 알림 메세지 (1) | ||
변종원(웅파)
/
2011/03/29 16:48:51 /
추천
0
|
헛발이
/
2011/03/29 18:29:29 /
추천
0
초보자가 감히 의견을 적어 봅니다..
저도 그런 규정(?)이라고 하기엔 머하지만 뭐가 올바른 방법일까 아직도 고민 하고 있습니다. 약 1년간 이렇게도 해 보고 저렇게도 해보고 한 다음에 아직도 결론이 잘 나지 않는 부분이긴 하지만.. 저 같은 경우에는 이렇습니다. 예를 들어서 mdate()라는 핼퍼를 사용한다고 가정해 보면 이 핼퍼를 사용하기 위해 $this->load->helper('date');를 로드 해야 합니다. 일단은 view에 넣는건 올바르지 않다고 생각됩니다. 나중에 생각해 보면 꼭 100%그렇게 해야 하는건 아니지만 view는 업무분담을 하게 되면 view는 디자이너 또는 코더가 해야 하는 부분이기 때문에 view에서는 단순히 <뷰에서> echo $mydate;만 넘겨 주는것이 좋습니다. 디자이너는 아무 생각 안하고 단순히 콘트롤러나 라이브러리에서 넘겨준 변수만 찍어 주게 해야 나중에 디자이너가 복잡해지지 않고 디자인을 수정하기도 수월하게 될것입니다. 그러면 $mydate가 콘트롤어에서 $mydate 값을 만들기위해 직접 콘트롤러에서 <콘트롤러> $data['mydate'] = mdate('%Y/%m/%d', time());를 하게 되는데 이 부분이 딱 한둔데서만 사용하게 된다면 해당 콘트롤러에서 메소드 부분에서 딱 한번만 로드 하면 된다고 생각됩니다. 정리를 하면 <콘트롤러에서> class Test extends CI_Controller { function __construct() { parent::__construct(); } function index() { $this->load->helper('date'); $data['mydate'] = mdate('%Y/%m/%d', time()); }이렇게 하면 됩니다. 하지만 콘트롤 전체에서 사용하게 된다면 다음과 같이 상용하면 되겠구요.. <콘트롤러에서> class Test extends CI_Controller { function __construct() { parent::__construct(); $this->load->helper('date'); } function index() { $data['mydate'] = mdate('%Y/%m/%d', time()); } function page() { $data['mydate'] = mdate('%Y/%m/%d', time()); }하지만 여기저기서 막 쓰게 된다면 아마도 콘트롤러 보다는 라이브러리를 하나 만들어서 사용해도 된다고 생각합니다. 다시 말하면 <콘트롤러에서> class Test extends CI_Controller { function __construct() { parent::__construct(); $this->load->library('test_lib'); } function index() { $data['mydate'] = $this->test_lib->mydate(); } <라이브러리> class Test_lib { function __construct() { $this->ci =& get_instance(); } function mydate() { $this->ci->load->helper('date'); return mdate('%Y/%m/%d', time()); }라이브러리 전체에서 사용하게 된다면 <라이브러리> class Test_lib { function __construct() { $this->ci =& get_instance(); $this->ci->load->helper('date'); } function mydate() { return mdate('%Y/%m/%d', time()); }이렇게 사용한느것도 가능합니다. 로드부분을 라이브러리가 아니고 콘트롤러에서 해 주고 사용해되 됩니다. <콘트롤러에서> class Test extends CI_Controller { function __construct() { parent::__construct(); $this->load->helper('date'); $this->load->library('test_lib'); } function index() { $data['mydate'] = $this->test_lib->mydate(); } <라이브러리> class Test_lib { function __construct() { $this->ci =& get_instance(); } function mydate() { return mdate('%Y/%m/%d', time()); } 마지막으로 거의 모든 홈페이지에서 사용하게 된다면 그냥 쉽게 autoload에 설정해 주면 아주 편하죠~ 이렇게 하면 된다고 생각됩니다. 꼭 이렇게 해야 한다 저렇게 해야 한다 라는건 없지만 저는 이렇게 생각하고 사용하고 있습니다. |
cleansugar
/
2011/04/05 22:56:43 /
추천
0
좀 여렵지만 여러번 읽어보겠습니다. 답변 주셔서 감사합니다. |
컨트롤러에 있는게 맞지 않을까요?
어떤 것은 컨트롤러에 있고, 어떤 것은 뷰에 있으면 관리상...
주로 뷰에서 사용이 되서 직관적이기는 할 것도 같지만 로직상 컨트롤러에 두는게 맞는것 같습니다.
매뉴얼에도 뷰에서 로드할 수 있지만 권장하지 않는다라고 되어 있습니다.