2011-10-21 32 views
4

當我在我的控制器中聲明$ this-> layout ='ajax'時,我的css dosnt似乎工作。

在我的view1.ctp中,我創建了一個使用jquery的對話框。內容將通過jquery.ajax()從view2.ctp獲取。我創建了html類,id和所有類似於view1.ctp的。

即時接收的內容沒問題。問題是我在view2.ctp中聲明的id和class不起作用。簡而言之,我即將獲得一個空的對話框設計。

關於如何解決這個問題的任何想法?先謝謝你。乾杯!

在我view1.ctp

<div id="thisDialog"> 
    <div id="content"> 
    </div> 
</div> 

<script> 
    jQuery('.test_box').live('click',function(){ 
     jQuery('#content').empty(); 
     jQuery.ajax({ 
      async:false, 
      url: '/controller1/view2/'+id //url pointing to my 1controller.php 
      success:function(data){ 
       jQuery('#content').append(data); 

      } 
     }); 


     jQuery('#thisDialog').dialog('open'); 
    }); 

</script> 

這裏是controller1.php

function view2($id) 
    { 
    $this->layout = 'ajax'; 
    $query = $this->Model->find('all') //somequery here 
} 

這裏是view2.ctp

<div class='box'> 
    <div class='title'> 
      <h5>Title here</h5> 
    </div> 
    <div class='contents'> 
     <table> 
      <tr> 
      <td class='head'></td> 
       <td class='head'></td> 
       </tr> 
       <tr> 
       <td class='alt'>Field content1 here</td> 
       <td>Fields content2 here</td> 
       </tr> 
     </table> 
    </div> 
</div> 
+0

你還可以添加你的default.ctp和ajax。 ctp? – Rifat

回答

4

Ajax佈局是一個簡單的空白文件,該文件只包含您輸出的HTML(或其他內容)廢料。它不包含任何樣式表,因爲樣式信息應該來自您要插入內容的頁面。爲調用頁面中的ID和類定義樣式將解決您的問題。

+0

我有一個layout.ctp,其中view1.ctp被稱爲使用$ contents_for_layout。我已經包含了layout.ctp的標籤中的所有樣式表。我在layout.ctp中聲明的樣式表是app欺騙view1.ctp。糾正我,如果即時通訊錯了,你是否試圖解釋我必須重新聲明樣式表在我的view1.ctp它可以在我的view2.ctp? ^^ – unknown

+0

這取決於。如果你的AJAX調用的內容被插入到layout.ctp的DOM中,那麼你不需要重新聲明任何東西。否則,如果您正在使用具有自己CSS的litebox或對話框,則必須重新聲明。如果使用Firebug查看DOM,很容易瞭解發生了什麼。 – JohnP

+0

對話框位於佈局的DOM內,我試圖在view1.ctp中重新聲明我的樣式表。還是行不通。 thansl的答覆。 – unknown

0

在「AJAX」佈局可以位於cake/lib /視圖/佈局/ ajax.ctp中找到,它的內容是:

<?php echo $content_for_layout; ?> 

這基本上只輸出圖,其中沒有任何周圍的HTML(所以沒有CSS或JS)。

+0

感謝您的回覆。所以如果使用$ this-> layout ='ajax',那麼沒有辦法使用css或js自定義視圖? – unknown

+1

如果您要將原始數據發送到ajax調用(JSON對象或HTML片段),則只應使用此視圖。如果您的頁面是通過ajax在iframe中加載的(某些模式插件會這樣做),那麼它應該使用默認佈局,因爲包含頁面樣式不適用於iframe內容。 –

0

爲什麼你需要'ajax'佈局的CSS?總之:

  1. 佈局可以在/cake/libs/view/layout/ajax.ctp(中找到與所述befor這是不常見的HTML的東西,只不過是迴應輸出數據從控制器
  2. 可以複製。這個(或default.ctp)文件到/app/views/layouts/ajax.ctp,所以它將被用來代替位於蛋糕核心文件中的一個。