CodeIgniter - Екінші контроллерді пайдаланып, көріністі көріністе қалай орналастыру керек

Сондықтан менің бұл бөлігім менің көзқарасымда:

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

Онда басқа айнымалылар да бар. Мұнда Мен оларды қарауға жіберетін контроллерімнің бөлігі:

$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 айнымалысына екінші көріністі жіберетін екінші контроллерді жасағым келеді.

Осындай нәрсе (Коханаға ұқсас):

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

Бірақ бұл жұмыс істемейді.

Менің екінші сұрағым - келесі контроллерді қосатын сілтемеге басқаннан кейін, екінші екінші кірістірілген көріністі қалай көрсете аламын?


EDIT:

Бірақ пайдаланушы келесі контроллерді іске қосатын сілтемені басқаннан кейін каталог каталогын $ catalog айнымалысына жібергім келеді:

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

.. одан кейін $ name және $ description дегенді қалаймын.

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

бірінші координаторда анықталған орналасу көрінісінде $ catalog файлына өту керек

0

2 жауаптар

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

Оның орнына true параметрін жүктемені көру функциясының 3 параметрі ретінде енгізіңіз және бұл түзуді шығарып алудың орнына көріністі қайтарады. Содан кейін қайтарылған кодты бастапқы көрініске тағайындауға болады.

3
қосылды
Рахмет, бірақ екінші бақылаушы арқылы көріністі жібергім келеді. Мен лауазымға толық мәліметтер енгіздім.
қосылды автор Ziik, көзі

Мен сіздердің сұрақтарыңызды толығымен түсінемін деп үміттенемін, бірақ жоқ болса, кешірім сұраймын.

Менің болжауымша, сіз бетті «қосымша» барлық нұсқасымен жүктеп жатырсыз және пайдаланушы бастамасы бойынша басу арқылы беттің «мазмұн» бөлігін жаңарта аласыз.

Егер JavaScript негізіндегі шешімді іске асыратын болсаңыз, сізге тек html фрагментін шығаратын контроллер қажет және оны ajax шақыру арқылы ағымдағы бетке енгізіңіз.

Егер JavaScript қолданбасаңыз, онда бұл беттің толық жаңартылуы еді, сондықтан сіз бетті қайта құрып, таңдалған каталог мазмұнын контроллерге жібересіз.

ЖАҢАРТУ

Мұны ajax немесе hmvcсіз орындау үшін басқа контроллерден осы контроллерге мазмұнды алуыңыз қажет, сондықтан сіз тек php-пен қосымша сұраныс жасай аласыз:

$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
қосылды
Әрине, бар, бірақ сіздің контроллеріңізге және құрылымыңызға байланысты. Егер сіз HMVC пайдалансаңыз, сол контроллерлерге қоңырау шала аласыз контроллерлерден. Егер сіз мұны көп істесеңіз, мен оны ұсынар едім. Алайда, бұл оңай нәрсе үшін, мен тек file_get_contents() қоңырауын екінші контроллерге айналдырып, оны көріністе қоямын. Жауапымдағы жаңартуларды қараңыз.
қосылды автор swatkins, көзі
Мен оны ajaxсіз орындағым келеді, сондықтан бетті жаңарту мәселе емес. Сондықтан кодты кішірейте алмайсыз (екінші контроллер тек $ мазмұнға мәнін береді)? Жалғыз жолы - барлық айнымалы мәндерді ( $ санаттар , $ home_menu , $ ақпарат т.б.) анықтау, b> және орналасуын көрінісін салыңыз ба?
қосылды автор Ziik, көзі