Raylar Partials ve şablonları CodeIgniter veya PHP Eşdeğer

11 Cevap php

CodeIgniter'daki, ya da çekirdek PHP; Rails görünümü partials ve şablonları bir eşdeğer var mı?

Kısmi benim görünümü içinde başka bir görünüm fragmanı versinler istiyorum. Ben içinde benim homepage.php görünüme işaret olabilir ortak bir navbar.php görünüm olabilir. Şablonları tek bir yerde bir HTML sayfasının genel kabuk tanımlamak ve her bir görünüm sadece gövdesini doldurmak izin istiyorum.

Çeşitli görüşler denetleyicisi sırayla işlenir nerede CodeIgniter belgelerinde bulabildiğim en yakın şey, Loading multiple views idi. Bu kontrolör içine sayfamın görsel görünümünü dikte gibi garip görünüyor. (Yani navbar taşımak benim tasarımcı denetleyicisi düzenlemek gerekir).

Bunu gerçekleştirmek için bir PHP yol yığını overflow arama oldum. I ob_start ile partials taklit bahsediyor, this page bulduk. Olduğu CodeIgniter içinde önerilen yaklaşımdır?

11 Cevap

Bazı MVC kural kırılma olabilir, ama ben her zaman sadece bireysel manzaralı benim "parçaları" yerleştirilmiş ve onlara gereken diğer görünümler içinde, CodeIgniter stil onlara yük ettik. Hemen hemen bütün görüşlerin sırasıyla, üst ve alt kısmında bir başlık ve altbilgi görünümü yük:

<? $this->load->view( "header" ); ?>
//Page content...
<? $this->load->view( "footer" ); ?>

Başlık daha sonra aynı şekilde, vb bir NavBar içerebilir

Bu ben kullanmak aslında ne olduğunu:

function render_partial($file, $data = false, $locals = array()) {
$contents = '';

foreach($locals AS $key => $value) {
	${$key} = $value;
}

${$name . '_counter'} = 0;
foreach($data AS $object) {
	${$name} = $object;

	ob_start();
	include $file;
	$contents .= ob_get_contents();
	ob_end_clean();

	${$name . '_counter'}++;
}

return $contents;

}

Bu gibi bir şey aramak için izin verir:

render_partial('/path/to/person.phtml', array('dennis', 'dee', 'mac', 'charlie'), array('say_hello' => true));

ve / dosya / yolu / person.phtml adres:

<?= if($say_hello) { "Hello, " } ?><?= $person ?> (<?= $person_counter ?>)

Bu size neler daha iyi bir resim elde yardımcı olsa oluyor bazı sihirli. Tam dosya: view.class.php

Ben kendimi çok ICI Raylar hareketli buldum ve ne partials ile yaptığı temelde bir değişken olarak görünümünde partials işlemek ve kontrolör onu ayarlanır.

Yani görünümünde size (_partial.php) gibi bir şey olurdu:

<h2>Here Comes The Partials</h2>
<?= $some_partials ?>

Ve sizin gibi denetleyicisi ayarlayabilirsiniz:

$this->load->view('the_view', 
   array('some_partials', 
         $this->load->view('_partial', array(), TRUE)
   )
);

Personally, I prefer to use CI's view instead of ob_start, but that's me =) PS: When loading views, first argument is the view name, second one is the parameters to be passed to the view, and the third one is "ECHO" flag, which basically tells CI whether to render it directly or return the value of the view instead, which is basically what I did in the example.

Ben olsa iyi bir çözüm olduğunu sanmıyorum, ama benim için çalışıyor. Herkes daha iyi bir çözüm var?

Benim son zamanlarda yayımlanan Template library bu şekilde çalışır.

Bu şablon kütüphanesi de incelemeler çok daha fazla güç verecek olan benim Dwoo implementation ile güzel oynuyor.

Bu ancak ben size Savant3 şablonu sistemine bir göz öneririm, tüm maalesef CodeIgniter spesifik değildir. Bu bir dizeye şablonu işlemek için izin verir. Sonra sadece istediğiniz her yerde sıkışmış olabilir.

Belki böyle bir şey CodeIgniter'daki var?

Ben şablonu işlemek için, görünümü işlerken bir tesis eklemek için bir yol düşünmek, ve daha sonra içerdiği tüm alt şablon olabilir.

CodeIgniter ve Smarty birlikte güzel oynamak.

İşte anlatan bir blog yazısı nasıl use smarty with codeigniter. Masterpage gibi asp.net de uygulanmaktadır.

Oküler deneyin - http://codeigniter.com/wiki/Ocular_Layout_Library/ - onun raylar çiftleşmiş kütüphane ilham.

Sen partials ve şablon için, kontrol edebilirsiniz

    http://code.google.com/p/ocular/wiki/Introduction

Symfony onların partial/component kurulumu ile yapar.