структура рендера yii

1

У меня вопрос о визуализации представления Шаги в структуре yii, когда я вызываю эту строку:

$this->render('test',array('model'=>$model));

в макете column2 сначала откройте весь проект Framework layout-> main.php, а затем он запустит layout-> column2.php, а затем запустит мой просмотр site-> test.php
мой вопрос заключается в том, как в рамках этой структуры эти шаги и как понять структуру, когда я использую эту команду:

<?php echo $content;?>

который $content подходит для использования сейчас?
Тпх

Теги:
yii

1 ответ

2
Лучший ответ

это настраиваемый макет column2. Я использую это для примера, объясняя шаг

 <?php /* @var $this Controller */ ?>
<?php $this->beginContent('//layouts/main'); ?>
<div class="span-19">
    <div id="content">
        <?php echo $content; ?>
    </div><!-- content -->
</div>
<div class="span-5 last">
    <div id="sidebar">
    <?php
        $this->beginWidget('zii.widgets.CPortlet', array(
            'title'=>'Operations',
        ));
        $this->widget('zii.widgets.CMenu', array(
            'items'=>$this->menu,
            'htmlOptions'=>array('class'=>'operations'),
        ));
        $this->endWidget();
    ?>
    </div><!-- sidebar -->
</div>
<?php $this->endContent(); ?>

то код выполняется поочередно. Часть

 <?php $this->beginContent('//layouts/main'); ?>

показать основной макет

и в main.php layout main.php строка

<?php echo $content; ?>

перекликается с содержимым column1.php или column2.php, поэтому они не заменяют часть кода в main.php, их содержимое просто отражается внутри main.php.

здесь выполняется рендеринг вида, вызванного рендерингом в контроллере

<div class="span-19">
    <div id="content">
        <?php echo $content; ?>
    </div><!-- content -->
</div> 

эта часть управляет второй колонкой и заканчивает контент

<div class="span-5 last">
    <div id="sidebar">
    <?php
        $this->beginWidget('zii.widgets.CPortlet', array(
            'title'=>'Operations',
        ));
        $this->widget('zii.widgets.CMenu', array(
            'items'=>$this->menu,
            'htmlOptions'=>array('class'=>'operations'),
        ));
        $this->endWidget();
    ?>
    </div><!-- sidebar -->
</div>
<?php $this->endContent(); ?>

Надеюсь, это полезно

рендер от контроллера инициализирует $ content show в layout2 $ content.. это отображается в одном другом $ content, представленном в main.php $ content.

Затем main.php $ content содержит результат содержимого layout2 и layout2 contian, содержимое resul формирует ваше представление

  • 0
    привет tnx для твоего ответа я хочу знать, где $ content инициализируется на каждом шаге, я имею в виду, например, когда я хочу отобразить $ a как 1, я устанавливаю $ a = 1, а затем я использую echo $ 1, где фреймворк устанавливает значение для $ content ?
  • 0
    Я расширил ответ ..

Ещё вопросы

Сообщество Overcoder
Наверх
Меню