Kontrolörün yapıcı parametre geçirerek

3 Cevap php

Ben tüm ortak bilgi paylaşmak gerektiğini çeşitli yöntemler vardır bir denetleyici var. Benim URI biçimi bu gibi diyelim:

http://server/users/id/admin/index
http://server/users/id/admin/new
http://server/users/id/admin/list
http://server/users/id/admin/delete

I id için veritabanından bazı bilgileri almak yerine modelini aramak için bunların her bir satır yazı tüm yöntemleri için onları kullanılabilir olması gerekir. Bunu nasıl yapabilirim?

3 Cevap

class users extends Controller {

 private $mydata = array();

 function users()
 {   
     parent::Controller();
     ....

     $this->mydata = $this->model->get_stuff($this->uri->segment(2));
 }

 function index()
 { 
     $this->mydata; //hello data!
 }

Burada sadece (muhtemelen gerçekten kötü bir fikir) dizi kodlanmış. Eğer gerekiyorsa yine bir CodeIgniter oturumda veri saklayabilirsiniz. Codeigniter aksi takdirde (bunun nasıl dokümanlar bakın) veritabanındaki verilerin büyük lekeler saklayabilirsiniz (toplam eğer 4kB daha az) bir tanımlama bu verileri saklayabilirsiniz.

Bkz: http://codeigniter.com/user_guide/libraries/sessions.html

Fıkra: Veritabanına Kaydetme Oturum Verileri

İşte bazı oturum egzersiz:

$this->session->set_userdata('mydata', $mydata);
....
$mydata = $this->session->userdata('mydata');

Bu CodeIgniters Hook mechanism adlı çözülemezse, size denetleyicisi yapıcı yöntemini geçersiz kılmak ve kendi diyebiliriz. their SVN repository muhtemelen gibi bir şey yapmak istiyorum bakılırsa

class YourController extends Controller
{
    function YourController()
    {
        parent::Controller();
        $this->_preDispatch();
    }

    function _preDispatch()
    {
         // any code you want to run before the controller action is called
    }

PreDispatch için çağrı ebeveyne aramadan önce olması gerektiğini olabilir. Sadece deneyin ve eğer o inşaat bakın. Ben hala PHP4 sözdizimi kullanın bilmiyordum. Ugh: (

Senin url yapısı ve CodeIgnitor bir MVC deseni kullandığı gerçeğine dayanarak, ben index.php için bir sorgu dizesi içine url yolunu biçimlendirmek için mod_rewrite kullanarak varsayarak yaşıyorum. Bu durumda, "id" değeri script yürütülmesinde herhangi bir noktada $ _REQUEST ['id'] mevcut olmalıdır ...