0

現在のアプローチ

<table>現在、ヘッダー、ボディ、フッター構造を持つを使用して、すべてのページネーション結果を単一の要素にレンダリングしています。レンダリング スタイルは非常にスプレッドシートに似ており、この 1 つの要素で複数のコントローラーのページ分割された結果を処理できます。

問題

ページ分割された結果の構成可能なレンダリング スタイルをサポートする必要があります。主な 2 つのスタイルは、スプレッドシートとpinterest.comスタイルです (pinterest では、さまざまな長さの縦の列を参照しています)。

実装方法

CakePHP 2.2 ビュー機能を使用してこれを実装する方法についての回答を探しています。ブロック、テーマ、およびネストされたビュー。そのため、コードの多くは乾燥しており、構成された部分は異なるスタイリングのみを適用します。

各タブレット セルの値、レコード タイトル、およびそのような詳細をレンダリングするコードはすべて、テーブルまたは pinterest (またはそのスタイルと呼ぶもの) としてレンダリングするコードから分離する必要があります。

課題

Cake の各メソッドには制限があるようです。次の場合、どのアプローチが最適ですか?

  • 各レコードがレンダリングされるとき、異なる pre/post タグが必要であり、そのレコードの各フィールドにも同じタグが必要です。これらのタグは、スタイル レンダラーによって多数定義されます。
  • 将来、フィールド値の AJAX 編集などの機能を追加する必要があるかもしれませんが、スタイル ハンドラーを変更する必要はありません。したがって、スタイル レンダラーはスタイルだけを処理する必要があります。
  • 多くの私のスタイル タグには、wrapping提示されたデータが含まれます。そのためにどのCakePHPメソッドが最適ですか?
  • これを構成する最良の方法は何ですか? paginate 要素がレンダリングするスタイルを認識できるようにします。
4

2 に答える 2

1

私は最近、定義リストの順序付けられていないリストを使用してこれを行う必要がありました。コードを DRY に保ちながらこれを行うための鍵は、要素を使用することです。要素は、フォルダー Views/Elements にある 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>
于 2013-01-22T22:46:52.490 に答える
0

最善の選択肢は、CSS を使用することです。あなたはそれで何ができるかに驚くでしょう。テーブルを長方形のレイアウトから垂直のレイアウト (たとえば、モバイル画面のように) に「反転」することもできます。これは、目的に近いと思われます。

于 2013-01-21T23:37:58.810 に答える