2012-04-14 2 views
2

내 모델 클래스와 생성자가 모델로드 :CodeIgniter는 매개 변수

<?php class Permissions extends CI_Model { 

    private $userID = ''; 
    private $permissions = ''; 

    function __construct($userID) 
    { 
     // Call the Model constructor 
     parent::__construct(); 

     $this->userID = $userID; 
     .... 
    } 
    function __construct() 
    {.....} 
?> 

을 나는 분명히 내가 할 수없는, 매개 변수와 함께이 모델을로드 할. 매개 변수없이 나는이 방법으로 매개 변수가없는 생성자를로드 할 수

$this->load->model('Permissions'); 

내 첫 번째 질문 : 매개 변수 말도있는 모델을로드? 두 번째 : 실행 가능하다면 어떻게 할 수 있습니까? 미리 감사드립니다.

+1

'model()'메소드를 복사하지만 paramers를 받아들이는 메소드를 만들려면 로더 클래스를 조정해야 할 수도 있습니다. 그런 다음'$ this-> load-> modelnew ('modelname', $ param)'을 호출합니다. 아, 그리고 CI_Model을 확장하는 MY_Model 클래스도 만들어야합니다. –

+0

아마 맞 겠지만,로드 한 후에 init 함수를 호출하는 것이 훨씬 쉽습니다. 여전히 관심을 가져 주셔서 감사합니다. – guness

답변

1

이 포럼 스레드를 살펴 걸릴 수 : http://codeigniter.com/forums/viewthread/115681/

을하지만 허가를 확인하기위한 방법으로 매개 변수로 사용자 ID를주고 싶어 왜 내가 볼 수없는 이유는 무엇입니까? 세션을 사용하여 세션을 사용하여 userdata를 저장하고 세션에 사용자 ID를 작성한 다음 $ this-> session-> userdata ('user_id')를 사용하여 모델에서이를 호출하십시오.

해피 코딩!

+0

아이디어를 주셔서 감사합니다. – guness

+3

솔루션에 연결하는 대신 솔루션을 제공하십시오. 링크가이 링크와 마찬가지로 시간이 지나면 액세스 할 수 없게 될 수도 있습니다. – Yash

0

모델의 기능 수준에서 사용자 정의를 수행 할 수 있습니다. 모델을 확장하는 이유를 제공한다면, 그것이 합리적인지 아닌지 말할 수 있습니다. 사용자 특정 규칙을 만들려면 컨트롤러에서 수행하는 것이 좋습니다.

class Shop_m extends CI_Model { 

function getProductPriceInfo($cat,$id) { 
     $this->db->where('shop_price.catid', $cat); 
       $this->db->where('shop_price.relid', $id); 
       $this->db->select('optional.title,optional.desc,shop_price.*'); 
       $this->db->join('optional', 'optional.id = shop_price.relid'); 
     $q = $this->db->get('shop_price'); 
     if($q->num_rows() > 0) { 
      foreach ($q->result() as $row) { 
       $data[] = $row; 
      } 
     return $data; 
     } 
    } 
+0

다른 권한을 가진 여러 명의 사용자가 있습니다. 모델에서이 권한을 데이터베이스에서 가져오고 있습니다. 내 모델을 사용하여 사용자가 제품을 나열할지 또는 일부 제품을 편집할지 여부를 확인합니다. 아직도 컨트롤러를 사용하는 것이 더 낫습니다. (추신 : 저는 codeigniter에 초보자이고 PHP에는 전문적이지 않습니다.) – guness

+1

컨트롤러 수준에서 할 것입니다. 왜냐하면 모든 논리가 컨트롤러에 있어야하기 때문입니다. 모델에서 사용 권한에 대한 데이터를 가져와 컨트롤러에 대한 사용 권한을 확인할 수 있습니다. 권한을 확인하기 위해 도우미 또는 라이브러리를 만들 것입니다. 예를 들어 회원 전용 섹션을 작성하는 경우 해당 섹션 컨트롤러에 사용자에게 권한이 있는지 여부를 확인할 수 있습니다. 또는 사용자가 일부 데이터를 변경할 권한이 있는지 여부를 확인하려면 데이터를 업데이트하는 컨트롤러의 사용 권한을 확인하는 것이 좋습니다. 곧 컨트롤러에 대한 모든 규칙을 작성하십시오. – dorayaki

+1

즉, 일부 제품을 나열 할 때 모델에서 데이터를 가져 와서 뷰에 데이터를로드하는 컨트롤러에 사용자가 액세스합니다. 따라서 사용자가 해당 컨트롤러에 액세스 할 때 제품을 나열 할 권한이 있는지 여부를 확인할 수 있습니다. 권한이있는 경우 모델로 데이터를 가져 와서 뷰에로드하십시오. 그렇지 않으면 '이 섹션에 대한 액세스 권한이 없습니다'와 같은 오류가 표시됩니다. 도움을 주신 덕분에 – dorayaki

3

로드하는 대신 클래스를 인스턴스화 할 수 있습니다.

$ permission = new 허가 ($ param);