Yönetici paneli - ne "statik" göstermek için en iyi yoldur

2 Cevap php

Ben CodeIgniter yazılı benim CMS için bir yönetici paneli yazmak üzereyim. Her zaman görünür bazı kullanıcı bilgileri olacak - plandaki başlık bölümü ve kenar çubuğu hem de. Ben şahsen umut düşünüyorum ben görüntülenen gereken dinamik veri olduğunda, tekrar tekrar görünümüne aynı parametrelerinde gönderme yoruldum bu yana, çok daha kolay yapılabilir bir şekilde bunu yapmak için alışkınım Her sayfada zaten (vb, okunmamış mesajlar, kullanıcı adı, isim, statü gibi).

Ben biliyorum, ama ben vs, sadece bir örnek için, ben bir görünüm yüklemek için gereken her zaman kullanıcının kullanıcı adı, okunmamış mesajlar geçmek zorunda, kontrolörler ve modelleri gerekir? Bunun için kütüphaneye çeşit yapmalıyım?

Şimdi benim soru: How would I do it when it comes to best practice and for making it easy to maintain in the future?

Benim soru anlaşılabilir umarım :)

2 Cevap

Şahsen ben (Creating Libraries at codeigniter.com altındaki rehberlik izleyerek bir MY_Controller oluşturmak) Kontrolör kütüphane uzanacak.

Normal olarak bir model vb kullanmak istiyorsunuz. Sonra ilgili "küresel" veri ve çağrı almak için MY_Controller sınıfında özel bir işlev yaratacak

$this->load->vars('everywhere_data', $data_from_relevant_models);

gibi $everywhere_data bu noktadan itibaren denilen tüm görüşleri Eldeki kılacak. Sonra belki de aslında oturum için kullanıcı için bir koşullu denetimi ile, MY_Controller yapıcısı bu işleve bir başvuru ekleyin

Tüm bu verileri toplamak ve almak için karmaşık ise, sizin için bunu işlemek için bir kütüphane yazmak olabilir, ama 'controller' kısmı hala MY_Controller tarafından yapılması olacaktır: yani veri almak ve sonra vars yük-> () kullanmak için için görünümüne yayımlayabilirsiniz.

Hızlı ve denenmemiş bir örnek olarak, MY_Controller aşağıdaki gibi gibi bir şey başlamak istiyorum:

<?php
class MY_Controller extends Controller
{
    private $logged_in_user;


    function MY_Controller()
    {
        parent::Controller();

        if( $this->_logged_in_userid() > 0 )
        {   
            $this->logged_in_user = $this->_get_user( $this->logged_in_userid() );

            $this->load->vars('logged_in_username', $this->logged_in_user->username );
        } else {
            $this->logged_in_user = false;
        }

    }
...
}

Gibi şeyler _logged_in_userid() sizin için oturumu (örneğin return $this->session->userdata('logged_in_userid');), ve _get_user(), ilgili modellere erişebilmesi olacağını ulaşmak olacağını unutmayın.

Son olarak, onlar odaklanmak böylece bu derli toplu normal denetleyicileri bırakır $logged_in_username (veya everywhere_data benim ilk örnekte) vb üstbilgi içine çağırır hangi erişen bir görünümü olurdu kendi özel işlevlerini sunmaya, sizin kod birkaç kez yeniden durur VE MVC idealleri korur.

Sadece bilgiyi tutmak ve tek bir yerde tüm tutmak istiyorsanız Görünümü kendisi bir $ _SESSION değişkeni almak için bir görünüm oluşturabilirsiniz.