CodeIgnitor ile Çoklu sayfalar?

3 Cevap php

Ben sadece benim görünümü yüklemek için bir zaman var ve farklı sayfalarda onları yeniden kullanmak için en iyi yolu bulmak için çalışıyorum.

Örneğin ana sayfası için ben bu kodu vardır:

function index()
    {

    	/* Load Includes for all pages */
    	$header = $this->load->view('includes/header','',true);
    	$scripts = $this->load->view('includes/scripts','',true);
    	$navigation = $this->load->view('includes/navigation','',true);
    	$footer = $this->load->view('includes/footer','',true);

    	/* Load widgets for Home Page*/
    	$rotator = $this->load->view('widgets/home_feature','',true);

    	$login = $this->load->view('widgets/login','',true);

    	$cal = $this->load->view('widgets/calendar_home','',true);
    	$gallery = $this->load->view('widgets/photos_scroll','',true);
    	$tags = $this->load->view('widgets/tags_view','',true);
    	$spotlight = $this->load->view('widgets/spotlight','',true);
    	$recent = $this->load->view('widgets/activityfeed','',true);

    	$data=array(
    				'title'=>'Philly2Night.com',
    				'MetaDesc'=>'Cities2Night new social network',
    				'MetaKeywords'=>'Social, Party, Plan, Events',
    				//Load Includes
    				'header'=>$header,
    				'scripts'=>$scripts,
    				'navigation'=>$navigation,
    				'footer'=>$footer,
    				//Load Widgets
    				'feature'=>$rotator,
    				'login'=>$login,
    				'calendar'=>$cal,
    				'photos'=>$gallery,
    				'tags'=>$tags,
    				'spotlight'=>$spotlight,
    				'recent'=>$recent
    				);
    	$this->load->vars($data); 			
    	$this->load->view('pages/home_view');



    }

Nasıl yeni sayfalar oluşturmak, ancak bu görüşlerini referans mı? Ben ideal ben anahtarını kullanmak istiyorum, ve davaları tanımlamak ama ne yazık ki işe yaramadı, var küresel yapmaya çalıştık.

3 Cevap

Eğer doğru anlamak, ben sadece size denetleyicisi her eylem için yapıştırmak / kısmını kopyalamak zorunda değilsiniz, böylece tüm yük kod için bir ortak yer olmasını istiyorum düşünüyorum. Bu durum buysa ...

Controller bir kurucu oluşturmak, load->view var s hareket ve sınıf içinde değişkenler içine saklayın:

function __construct() {
    parent::__construct();
    /* Load Includes for all pages */
    $this->header = $this->load->view('includes/header','',true);
    $this->scripts = $this->load->view('includes/scripts','',true);
    $this->navigation = $this->load->view('includes/navigation','',true);
    $this->footer = $this->load->view('includes/footer','',true);
}

Herhangi $ başlığı, $ komut, $ this-> header, $ this-> komut, vb vb başvuruları değiştirmek için emin olun

Eğer PHP4 kullanıyorsanız Ayrıca, sınıf adı ile __construct olarak değiştirin.

Her şeyden önce bu kadar çok sayfaları yüklenirken edilmemelidir. Her dosya sistemi talebi performans üzerinde payını alır. Aksine "başlığını" ve "altbilgi" olan daha adil "home_view" sayfasında bunları birleştirmek.

Eğer görüşlerini yüklemek kez onları daha sonra her sayfa isteği yüklü kalmasını istediklerini belirten gibi İkincisi, soru geliyor. Her isteği yepyeni bir yük olduğu gibi bu PHP ile mümkün değildir. Ancak, veritabanı sorgularını veya hesaplamalar bir sürü yapıyor ve sonra widget yükleme eğer 5 dakika veya böylece widget önbelleğe ve sorguları her sayfayı kaydedebilirsiniz. Önbellek sınıflar için CodeIgniter forumlarda bak.

This may or may not be of some use: http://codeigniter.com/forums/viewthread/77279/

Ben CodeIgniter projelerin TÜM bu kullanmak, bu çiftleşmiş çok çok kolay hale getirir.