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'       =>  ''
        ));

Я хачу, каб стварыць другі кантролер, які пры актывацыі пасылае другі від зменнай $ каталог .

Нешта падобнае (па аналогіі з Кохана):

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

Але гэта не працуе.

Маё пытанне, як я магу паказаць гэты другі гнездавой выгляд пасля націску на спасылку, якая актывуе другі кантролер?


EDIT:

Але я хачу, каб адправіць Каталог выгляд у $ каталог зменнай пасля таго, як карыстальнік націснуў на спасылку, якая актывуе другі кантролер, які выглядаць прыкладна так:

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

.. пасля гэтага я хачу <�моцны> $ імя і <�моцны> Апісанне $ павінны быць перададзены:

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

..which сабе быць перададзены $ каталог у размяшчэнне прагляд вызначана ў першым кантролеры

0

2 адказы

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

Замест таго, каб перадаць True у якасці 3-га параметру ў функцыі віду нагрузкі, і гэта вяртае выгляд, а не рэха яго прама. Пасля гэтага вы можаце прызначыць гэты які вяртаецца код на ваш першапачатковы выгляд.

3
дададзена
Дзякуй, але я хачу, каб адправіць прадстаўленне з дапамогай другога кантролера. Я дадаў дэталі да майго паведамлення.
дададзена аўтар Ziik, крыніца

Я спадзяюся, што я цалкам зразумець ваша пытанне, але калі няма, то я прашу прабачэння.

Я мяркую, што вы загружаеце старонку з усімі з «масоўкі» і хочаце, каб мець магчымасць абнаўляць «змест» частка вашай старонкі праз ініцыяваная кліку карыстальніка.

Калі вы рэалізуеце яваскрипт на аснове рашэння, то вам проста неабходны кантролер, які будзе выводзіць фрагмент HTML і ўпырснуць, што ў бягучую старонку з дапамогай Ajax выкліку.

Калі вы не рэалізацыі JavaScript, то гэта будзе цэлая абнаўленне старонкі, так што вы б проста аднавіць старонку і перадаць абранае змесціва каталога на кантролер.

<�Моцны> UPDATE

Для таго, каб зрабіць гэта без 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 , <�б> $ інфармацыі , і г.д ..), Уключаючы <�б> $ ўтрымання </б> і загрузіце размяшчэнне выгляд?
дададзена аўтар Ziik, крыніца