CodeIgniter / PHP - bir görünüm içinde bir görünüm arama

2 Cevap php

Temelde benim webapp için ben biraz daha iyi organize etmek için çalışıyorum. Şu anda o kadar, ben bir sayfayı yüklemek istediğiniz her zaman, ben bu yüzden gibi benim denetleyicisi onu yapmak zorunda:

        $this->load->view('subviews/template/headerview');
    $this->load->view('subviews/template/menuview');
    $this->load->view('The-View-I-Want-To-Load');
    $this->load->view('subviews/template/sidebar');
    $this->load->view('subviews/template/footerview'); 

Anlayacağınız gibi bu gerçekten çok etkili değil.

Yani ben bir 'master' görünümü oluşturmak düşünmüştüm - Bu template.php denir. Bu şablon görünümünün içeriği olan:

<?php
    $view = $data['view'];

        $this->load->view('subviews/template/headerview');
        $this->load->view('subviews/template/menuview');
        $this->load->view($view);
        $this->load->view('subviews/template/sidebar');
        $this->load->view('subviews/template/footerview');
?>

Ve sonra ben böyle bir kontrolör onu aramak mümkün olacağını düşündüm:

    $data['view'] = 'homecontent';
    $this->load->view('template',$data);

Ne yazık ki sadece bu işi yapamazsınız. Herkes yerine koyabilirsiniz herhangi Bu etrafında yollar veya düzeltmeleri var mı? Ben template.php dolar görünümünde etrafında "" s koyarak ve'' ler denedim ama hiçbir fark yapar. ": Veri Tanımlanmamış değişken" veya "görünüm yüklenemiyor: $ view.php" normal hata vb

Teşekkürler millet!

Kriko

2 Cevap

Eğer varsa nerede inanıyorum:

$view = $data['view'];

$this->load->view('subviews/template/headerview');
$this->load->view('subviews/template/menuview');
$this->load->view($view);
$this->load->view('subviews/template/sidebar');
$this->load->view('subviews/template/footerview');

Sadece çizgi kurtulmak gerekir:

$view = $data['view'];

Dizi denetleyicisi geçirilen zaman, görünümde değişken yerine veri $ ['view'] dolardan görüntüsü basitçe ulaşılabilir olmasıdır.

Epeyce önerileri burada http://codeigniter.com/forums/viewthread/88335/

I chose this method: Controller class:

public function __construct() 
{
    parent::__construct();

    $this->load->vars(array(
        'header' => 'partials/header',
        'footer' => 'partials/footer',
    ));
}

public function index()
{       
    $data['page_title'] = 'Page specific title';        
    $this->load->view('my-view', $data);
}

Görünüm:

<?php $this->load->view($header, compact('page_title')); ?>
... blah blah ...
<?php $this->load->view($footer); ?>

Görünümünde görünümü yük ve çocuğunuzun görünümü tarafından kullanılan olabilecek değişkenler geçmek zorunda ideal olmaktan uzak. Gibi bir şey kullanmak için güçlü olmak Action Filters in Laravel muhtemelen daha iyi olurdu.