2013-01-21 36 views
0

當前方法

當前,我使用具有標頭,主體和頁腳結構的<table>將所有分頁結果呈現在單個元素中。渲染樣式非常類似於電子表格,這一個元素可以處理多個控制器的分頁結果。通過自定義佈局有效地呈現分頁數據?

問題

我需要現在支持分頁結果的可配置呈現樣式。兩種主要樣式是電子表格和pinterest.com樣式(通過pinterest我指的是不同長度的垂直列)。

如何實現

我正在尋找關於如何實現這一使用CakePHP 2.2視圖功能的答案。塊,主題和嵌套視圖。因此,儘可能多的代碼是乾的,配置的部分只應用不同的樣式。

渲染每個平板電腦單元格中的值,記錄標題和類似細節的代碼都應該與將其呈現爲表格或pinterest(或您稱之爲該樣式)的代碼分開。

挑戰

Cake中的每種方法似乎都有侷限性。最好的方法處理以下內容?

  • 當每條記錄都被渲染時,它將需要不同的前/後標籤,並且該記錄中的每個字段都相同。這些標籤被風格渲染器定義了很多。
  • 我可能需要在將來像添加字段值的AJAX編輯一樣添加功能,並且不需要修改樣式處理程序。所以風格渲染器應該只處理樣式。
  • 我的很多風格標籤將涉及wrapping提供的數據。 CakePHP方法最適合哪種方式?
  • 什麼是最好的配置方式?這樣paginate元素就知道要渲染哪種風格。

回答

0

你最好的選擇可能是使用CSS;你會驚訝於你能用它做什麼。您甚至可以將表格從矩形佈局轉換爲垂直佈局(例如,在移動屏幕上),這似乎與您想要的接近。

+0

對不起,我正在尋找編碼解決方案。我在項目中廣泛使用CSS,但是當我需要的不僅僅是重新設計時。 – cgTag

1

我最近不得不使用定義列表的無序列表來做到這一點。在保持DRY代碼的同時做到這一點的關鍵是使用一個元素。元素是生活在該文件夾視圖/元素

的ctp文件在我的index.ctp中,我將表格更改爲ul標記,將tr標記更改爲li標記,並調用該元素來處理呈現dl。使用數組來傳遞對象和其類型的元素,其餘部分可以與CSS進行

index.ctp:

<ul><?php 
    foreach ($blobs as $blob){ 
    echo $this->Html->tag('li',$this->element('dl',array('blob'=>$blob,'type'=>'Blob'))); 
    } 
?></ul> 

dl.ctp:

<dl class="<?php echo $type;?>"><?php 
    foreach ($blob[$type] as $key => $v){ 
    echo $this->Html->tag('dt',$key); 
    echo $this->Html->tag('dd',$v); 
    } 
?></dl> 
+0

這是一個有趣的方法。我需要考慮這個方法。謝謝。 – cgTag

相關問題