CodeIgniter - İkinci denetleyiciyi kullanarak görünümdeki görünüm nasıl iç içe geçirilir

Bu yüzden benim görüşüme göre bu bölümü var:

 <body>
    <div id = "content">
       <?php echo $catalog ?>
    </div>
 </body>

İçinde başka değişkenler de var. Denetleyicimin görünümüne gönderdiğim kısım:

$this->load->view('layout',array(
        'categories'    =>  $categories,
        'home_menu'     =>  $home_menu,
        'information'   =>  $information,
        'favourite'     =>  $favourite,
        'new_products'  =>  $new_products,
        'bestsellers'   =>  $bestsellers,
        'login_info'    =>  $login_info,
        'catalog'       =>  ''
        ));

Etkinleştirildiğinde $ catalog değişkenine ikinci bir görünüm gönderen ikinci bir denetleyici oluşturmak istiyorum.

Bunun gibi bir şey (Kohana'ya benzer):

$this->layout->catalog = $this->load->view('products/catalog', array(
                'name'          =>  $name,
                'description'   =>  $description));

Ama işe yaramıyor.

Sorum şu, ikinci denetleyiciyi etkinleştiren bir bağlantıya tıkladıktan sonra bu ikinci iç içe görünümü nasıl gösterebilirim?


DÜZENLEME:

Ancak, kullanıcı ikinci denetleyiciyi etkinleştiren bir bağlantıyı tıkladıktan sonra, şunun gibi görünen bir bağlantıyı tıkladıktan sonra katalog görünümünü $ katalog değişkenine göndermek istiyorum:

 $products = $this->Product_model->list_products($category_id);
foreach ($products as $row)
        {
                     $name = $row->name;
                     $description = $row->description;
        }

.. bundan sonra $ name ve $ açıklama 'nın iletilmesini istiyorum:

$this->load->view('products/catalog', array(
                    'name'          =>  $name,
                    'description'   =>  $description));

... ilk denetleyicide tanımlanan düzen görünümünde $ catalog 'a kendisinin geçilmesi

0

2 cevap

You can call a $this->load->view within the view's code but I would not recommend it.

Bunun yerine, load view işlevinde 3. parametre olarak true değerini iletin ve bu, görüntüyü doğrudan dışalamak yerine geri döndürür. Ardından bu döndürülen kodu orijinal görünümünüze atayabilirsiniz.

3
katma
Teşekkürler, ancak görünümü ikinci bir denetleyici kullanarak göndermek istiyorum. Gönderime ayrıntıları ekledim.
katma yazar Ziik, kaynak

Sorunuzu tam olarak anladığımı umuyorum, ancak değilse, özür dilerim.

Tahminim, sayfayı tüm 'ekstralar' ile yüklüyorsunuz ve sayfanızın 'içerik' bölümünü kullanıcı tarafından başlatılan bir tıklama ile güncelleyebilmeniz.

Bir JavaScript tabanlı bir çözüm uyguluyorsanız, sadece html parçasını çıkaran ve bunu bir ajax çağrısı aracılığıyla geçerli sayfaya enjekte edecek bir denetleyiciye ihtiyacınız var.

Javascript uygulamıyorsanız, sayfa yenileme işlemi tam olacaktır, bu nedenle sayfayı yeniden kurar ve seçilen katalog içeriğini kontrol cihazına iletirsiniz.

GÜNCELLEME

Bunu ajax veya hmvc olmadan yapabilmek için, içeriği başka bir denetleyiciden bu denetleyiciye getirmeniz gerekir, böylece sadece PHP ile ek bir istek yapabilirsiniz:

$catalog_content = file_get_contents('/url_to_second_controller.html');
$this->load->view('layout',array(
    'categories'    =>  $categories,
    'home_menu'     =>  $home_menu,
    'information'   =>  $information,
    'favourite'     =>  $favourite,
    'new_products'  =>  $new_products,
    'bestsellers'   =>  $bestsellers,
    'login_info'    =>  $login_info,
    'catalog'       =>  $catalog_content
    ));
0
katma
Tabii ki var, ama bu senin denetleyicine ve yapısına bağlı. HMVC kullanıyorsanız, bu denetleyicileri arayabilirsiniz. kontrolörlerin içinden. Bundan çok şey yapacaksanız, tavsiye ederim. Bununla birlikte, bu kadar kolay bir şey için, ikinci denetleyiciye file_get_contents() çağrısını yapıp görünüme koyardım. Cevabımdaki güncellemeyi görün.
katma yazar swatkins, kaynak
Ajax olmadan yapmak istiyorum, bu yüzden sayfa yenileme bir sorun değildir. Yani kodu küçültmenin yolu yok (ikinci denetleyicinin $ içerik için yalnızca değer vermesini sağlayın)? Tek yol, $ içerik $ kategorileri , $ home_menu , $ bilgi , vb.) Tanımlamaktır. b> ve düzen görünümünü yükle?
katma yazar Ziik, kaynak