2011-11-14 54 views
0

我最近開始使用Yii框架試圖學習更多關於MVC的知識。

我當前已取得的markup看起來類似下面這樣的觀點:

<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?當分隔符和頁腳位於行​​的上方時,它們被包含在容器div中,所以它最有可能與Yii的渲染方法有關。奇怪的是,我在網上找不到任何類似的問題。

我想幹淨的代碼,所以雖然我可以使用另一個容器對齊和CSS3的目的,能夠保持分隔符和頁腳在容器div開始會更好。

+1

您是否檢查過「真實」源代碼(例如wget)或Firebug之類的東西?瀏覽器會嘗試「修復」您的 - 以防萬一 - 如果標記丟失,請修復HTML。 – schmunk

回答

1

我有相同的問題,但對我來說,問題是在IE瀏覽器下(至少在IE瀏覽器下可見,沒有時間檢查原因)。 我通過改變jquery.yiigridview.js的代碼行解決問題(通過CGridView remaped - > baseScriptUrl PARAM):

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()。在所有其他情況下,控制器呈現常規視圖,該視圖使用單個CGidView調用renderPartial。

0

你能爲此發佈css嗎?

萬一有幫助,我的結構是:

<container> 
    <header> 
    <menu> 
    </menu> 
    </header> 
    $content 
    <footer> 
    </footer> 
</container> 
+0

我將發佈css作爲最後的手段,作爲主帖的更新。這是一個令人費解的事情,因爲我有更多的部分比頂部張貼的部分多,他們都具有5-10個屬性。 我99%確定問題不在於CSS本身,而在於Yii呈現外部文件的方式。當我使用任何類型的小部件時,它的行爲也完全相同。包含的zii breadcrumb小部件完全關閉了所有div,直到它所在的頂部,就像我所有的自定義cportlet小部件一樣。 – Flarex

0

我懷疑你,是造成此錯誤的內容或佈局視圖有浮動</div>標籤的地方。 Yii在整理佈局時相當「笨」(用最好的方式),並且不會插入標籤。

如果您發佈您的佈局和視圖,我們可能能夠幫助您找到錯誤。