CI 묻고 답하기

제목 Controller 에 함수인자를 건네 줄수 있을까요?
글쓴이 darkninja 작성시각 2014/08/27 22:16:58
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 17260   RSS
https://ellislab.com/forums/viewthread/115681/
여기 보면 모델에는
약간 수정해서 어렵지 않게 인자를 붙일수 있습니다.
컨트롤러는 로드하는 부분이 없어서
주소표시줄에 붙여서 보내주는거 말고는 방법이 없을까요?
class Ciboard extends CI_Controller {

  var $board_table_name = '';
  var $comment_table_name = '';
  var $tags_table_name = 'tags';

	public function __construct($config = array('board_table_name'=>'ciboard', 'comment_table_name'=>'ciboard')) {
		parent::__construct();

		$this->initialize($config);

		$this->load->model('board_model', '', FALSE, $config);  		
		$this->load->model('comment_model', '', FALSE, $config);  		

class Board_model extends CI_Model {

	var $board_table_name = '';

	public function __construct($config = array('board_table_name'=>'ciboard')) {
		parent::__construct();

		$this->initialize($config);
	}

	public function initialize($config = array())	{
		foreach ($config as $key => $val)	{
			if (property_exists($this, $key)) {
				$this->$key = $val;
			}
		}
	}	
 다음글 현재 CI를 이용해서 CMS같은 프로그램을... (2)
 이전글 phpunit관련 질문 드립니다(어제에 이어서 오늘도.... (4)

댓글

kaido / 2014/08/28 07:19:22 / 추천 0
그냥 불러오세요? 됩니다.

저는 컨트롤러 함수  인자 전달 하는거 꽤 사용합니다.

외부 페이지에 노출 시키지 않고 함수형으로만 사용하고 싶으시면
 
function _funcname($data){
return $data;
}
내부 접근만 가능하게 됩니다.
 
한대승(불의회상) / 2014/08/28 10:04:42 / 추천 0
CI의 컨트롤러는 라우팅과 연결되어 있으니 초기화시 직접 인자를 넘겨줄 수는 없습니다.

하지만 외부에 노출되지 않아야 하는 정보는 세션을 통하여 전달이 가능 합니다.
kaido / 2014/08/28 10:23:11 / 추천 0
아 컨트롤러에서 다른 컨트롤러 함수 불러오는 것 말씀이시군요?

HMVC를 사용하시거나 해당 컨트롤러를 상속 시키면 되는걸로 알고있습니다.

어차피 클래스로 구성되어 있으니 말이죠.
darkninja / 2014/08/28 10:33:48 / 추천 0
원하는 작업은 하나의 컨트롤러와 하나의 모델로
다수의 테이블을 비슷한 모양으로
입.출력 하는 것인데

지금 실력으로는 링크에서 직접 입력하는 수밖에 없겠습니다.
같은 모델의 함수가 여러곳에서 다른 테이블 이름으로 불려지는 경우까지 포함한다면
하드코딩은 아니더라도
중요정보가 고정된다면
한가지 경우에서만 사용할수 있겠네요!

댓글 달아 주셔서 감사합니다.