Kohana - views klasör içindeki alt klasörleri

3 Cevap php

Ben Kohana kullanarak bir sitenin admin bölümünde çalışıyorum. Ben yönetici görüşlerini saklamak için görünümleri klasör içinde bir "admin" alt oluşturduk. Ben de burada gördüğüm Yönetici Şablon Kontrolörü denilen admin bölümü için Şablon Kontrol değiştirilmiş bir örneğini kullanıyorum:

abstract class Admin_Template_Controller extends Template_Controller
{
    public $template = 'admin/template';

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

            $this->template = View::set_filename($this->template);
            $this->template->css = 'adminstyles';
            $this->template->js  = 'html5';
        }
}

Ancak, ben css değişkeni "admin / şablon" dosyasında tanımlı değil ki bir hata alıyorum. Bu noktada, şablon dosyası yok bu yüzden ben başarılı bir ön uç çok oluşturmak için kullanılan görünümleri klasörde şablon dosyası aynıdır. Ben (ön ucu için) görünümleri klasöründe şablon dosyasını kullandığınızda da, dikkat etmek önemli bir gerçektir, doğru sayfasını yükler.

Yani, bir alt klasöründe bulunan varlık şablon dosyası ile ilgisi var inanmak için bana yol açar. Ben başarıyla aynı "views / admin" klasöründen başka bir görünüm dosyayı yüklemek çünkü bu olsa beni şaşırtıyor. Bu dosya olsa herhangi bir değişken içermez, bu nedenle yükler belki de bu yüzden.

Denedim

 $this->template = View::factory($this->template);

Ayrıca yeni şablon dosyasını yüklemek, ancak görünüm işleme önce çağrılması gerekir ki bir hata döndürür. Ben bu otomatik olmaktan işlemek nedeniyle olduğunu düşünüyorum, ama ben onu istiyorum.

Herhangi bir fikir büyük bir yardım olacaktır. Açıkçası, ben admin klasörünün dışına dosyayı taşımak ve yeniden adlandırmak, ama bu beni gerçekten neler olup bittiğini öğrenmek yardım gitmiyor olabilir.

3 Cevap

Çıkardığınız Bu satır:

$this->template = View::set_filename($this->template);

set_filename () statik bir yöntem değildir çünkü kırılma oldu; yöntemi (metodu zincirleme için yararlı) kendisini verir, çünkü bu yöntem bir bakış varolan örneği üzerinde aranmalıdır. Eğer ebeveyn ile aradığınız kurucusuna :: _construct () sizin için şablon görünüm oluşturur Template_Controller sınıfını genişleterek çünkü Ancak, ilk etapta bunu yapmak gerekmez.

Yalnızca varolan bir şablon nesnesi varsa set_filename () yöntemini kullanmak gerekir ama yepyeni bir nesneyi yeniden gerek kalmadan onunla ilişkili görünümünü değiştirmek istiyorum.

Son olarak, auto_render seçenek denetleyici bittikten görünümü işler bir post-denetleyici kanca tetikler; Bu controller sınıfının herhangi bir yöntemle içindeki kod üzerinde herhangi bir etkisi olmazdı.

Sorumun cevabını buldum. Satır:

$this->template = View::set_filename($this->template);

kaldırılması gerekmektedir. Belki tekrar şablonu yükler ve değişkenleri iptal eder. Tam olarak emin değilim. Ancak, hat zaten ben uzanan edildi Şablon Controller tanımlanan şablon dosya adını değiştirmek için gerekli olduğunu düşündüm. Ben Kohana forumlarda at üzerinde doğru okumak düşündüm. Ben değil herhalde. Umarım bu başkası yardımcı olur.

görünümü alt klasörler alt klasöründe görüşlerini kontrol denetleyicisi tam olarak adlandırılmış olmalıdır.