CodeIgniter'daki görünümünde erişim modeli?

6 Cevap php

Herkes nasıl ben CodeIgniter'daki görünümünde modeli erişmek yok bana söyleyebilir?

6 Cevap

CodeIgniter en $this->load->model() hiçbir şey döndürür. İşte bakın: system/libraries/Loader.php.

Bu irade çıktı kesinlikle hiçbir şey:

$model = $this->load->model('table');

print_r($model);

Ve bu bir sonraki örnek, size ölümcül hata verecektir Call to a member function some_func() on a non-object:

$model = $this->load->model('table');

$model->some_func();

O işlevi bile var farketmez, $model bir nesne değildir.

Yapılacak şey, veri döndüren model bir yöntemi var olduğunu, o işlevini çağırın ve görünüm dosyasına sonuçları geçmektedir:

$this->load->model('table');
$data = $this->table->some_func();
$this->load->view('view', $data);

PS: How is the only answer you've accepted the absolute wrong thing to do?

$ Modeli bir nesne olmadığından, kullandığınız model "masaya" bir çağrı "::" kapsam çözünürlük operatörü, herhangi bir nesne örneği olmadan sınıfın kendi işlevini çağırabilirsiniz yapabilirsiniz.

$this->load->model('table'); 
table::some_funct();

Not: Ayrıca, model "masada" içeride fonksiyonu "some_funct" statik yapmak gerekir.

Denetleyici bir modeli yüklenemedi

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

Böyle bir var bu modeli atama

$data['model_obj'] = $this->yourmodel; 

ve görünümü şablona bu veri dizisi atayın

Model yöntemleri çağırmak için görünüm şablonda $ model_obj nesne kullanın

$model_obj->some_method()

Bu yardımcı olur umarım ...

Selam. Onun denetleyicisi erişmeye gibi görünümden modelleri aynı moduna erişebilirsiniz. Modellerine görünüm erişim kendi denetleyicisi ithal olduğunu unutmayın.

MVC mimarisi görünüyor ettik orijinal UML, görünüm modelde yöntemlerini çağırır ..

http://www.as3dp.com/wp-content/uploads/2010/02/mvc_pope_krasner.png

Istekleri (ya da en azından verimli) arasındaki nesnelerin devlet değişiklikleri izlemek için hiçbir sebat yoktur çünkü .. ama pratikte PHP uygulamaları ile, ben daha iyi denetleyicisi çağırır tüm model yöntemi tutmak ve görüntülemek için geçmesi sonucunu bulmak mümkünse .