Yii отображает $ content внутри моего тега div контейнера, но затем закрывает контейнер div. Непреднамеренное? - PullRequest
0 голосов
/ 14 ноября 2011

Я недавно начал использовать фреймворк Yii , пытаясь немного больше узнать о MVC.

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

<div id=container">
  <div id="banner"></div>
  <?php echo $content?>
  <div id="separator"></div>
  <div id="footer"></div>
</div>

Когда страница загружается, исходный файл теперь выглядит так:

<div id="container">
  <div id="banner"></div>
  <div id="content">Content in here</div>
</div>
<div id="separator"></div>
<div id="footer"></div>

Есть идеи, что заставляет Yii принудительно закрывать мой контейнерный блок?Когда разделитель и нижний колонтитул находятся над линией, они включаются в контейнер div, поэтому, скорее всего, это связано с методом рендеринга Yii.Как ни странно, я не могу найти подобных проблем в сети.

Я пытаюсь кодировать аккуратно, так что пока я могу просто использовать другой контейнер для выравнивания и CSS3, имея возможность сохранить разделитель и нижний колонтитул в div контейнера, чтобы начатьс будет лучше.

Ответы [ 3 ]

1 голос
/ 25 ноября 2011

У меня была такая же проблема, но для меня проблема была в IE (по крайней мере, была видна только в IE. У меня не было времени проверить, почему).Я решаю проблему, изменяя строку кода в jquery.yiigridview.js (переназначается через CGridView -> параметр baseScriptUrl):

    options = $.extend({
        type: 'GET',
        url: $.fn.yiiGridView.getUrl(id),
        success: function(data,status) {
            $.each(settings.ajaxUpdate, function(i,v) {
                var id='#'+v;
                $(id).html( $( data ).children() ); // was: $(id).replaceWith($(id,'<div>'+data+'</div>'));
            });
            if(settings.afterAjaxUpdate !== undefined)
                settings.afterAjaxUpdate(id, data);
            $('#'+id).removeClass(settings.loadingClass);
            $.fn.yiiGridView.selectCheckedRows(id);
        },

РЕДАКТИРОВАТЬ: забыл упомянуть, что я использую renderPartial для визуализации представления с одним CGidViewв этом.В контроллере есть логика, которая проверяет ajax-запрос и, если это так, то отрисовывает это подпредставление и вызывает Yii :: app () -> end ().Во всех других случаях контроллер отображает обычное представление, которое вызывает renderPartial с одним CGidView.

0 голосов
/ 20 ноября 2011

Я подозреваю, что у вас есть плавающий тег </div> где-то в содержимом или представлениях макета, который вызывает эту ошибку.Yii довольно «глуп» (в лучшем случае) собирать макеты и не будет вставлять теги.

Если вы опубликуете макет и представления, мы сможем помочь вам найти ошибку.

0 голосов
/ 15 ноября 2011

Можете ли вы также опубликовать css для этого?

Если это поможет, моя структура:

<container>
  <header>
    <menu>
    </menu>
  </header>
    $content
  <footer>
  </footer>
</container>
...