テーブルからのデータのページ付けの問題を解決する必要があることを考えると、ツールとしてjqGridを使用することが決定されました。
選択する理由は簡単です。現時点では、優れたドキュメントなどを備えた最も強力なグリッドの1つです。
1)View_Helperを作成します。 この例では、ライブラリでこのクラスを作成します-Xms_ZendX_JQuery_View_Helper_jqGrid
public function jqGrid ( $id , array $params = array ( ) ) <br/>
{ <br/>
$params = $this -> _adjuctParams ( $params ) ; <br/>
if ( count ( $params ) > 0 ) { <br/>
$encodedParams = ZendX_JQuery :: encodeJson ( $params ) ; <br/>
} else { <br/>
$encodedParams = "{}" ; <br/>
} <br/>
<br/>
$js = sprintf ( '%s("#%s").jqGrid(%s);' , <br/>
ZendX_JQuery_View_Helper_JQuery :: getJQueryHandler ( ) , <br/>
$id , <br/>
$encodedParams <br/>
) ; <br/>
$this -> jquery -> addOnLoad ( $js ) ; <br/>
$this -> view -> headscript ( ) -> appendFile ( '/js/jquery/jquery.jqGrid.js' ) ; <br/>
$this -> view -> headLink ( ) -> appendStylesheet ( '/css/jsgrid/steel/grid.css' ) ; <br/>
<br/>
$html = "<table id=" '. $id . ' "></table>" ; <br/>
$html .= '<div id="' . $params [ 'pager' ] . '" class="scroll" style="text-align:center;"></div>' ; <br/>
return $html ; <br/>
}
public function jqGrid ( $id , array $params = array ( ) ) <br/>
{ <br/>
$params = $this -> _adjuctParams ( $params ) ; <br/>
if ( count ( $params ) > 0 ) { <br/>
$encodedParams = ZendX_JQuery :: encodeJson ( $params ) ; <br/>
} else { <br/>
$encodedParams = "{}" ; <br/>
} <br/>
<br/>
$js = sprintf ( '%s("#%s").jqGrid(%s);' , <br/>
ZendX_JQuery_View_Helper_JQuery :: getJQueryHandler ( ) , <br/>
$id , <br/>
$encodedParams <br/>
) ; <br/>
$this -> jquery -> addOnLoad ( $js ) ; <br/>
$this -> view -> headscript ( ) -> appendFile ( '/js/jquery/jquery.jqGrid.js' ) ; <br/>
$this -> view -> headLink ( ) -> appendStylesheet ( '/css/jsgrid/steel/grid.css' ) ; <br/>
<br/>
$html = "<table id=" '. $id . ' "></table>" ; <br/>
$html .= '<div id="' . $params [ 'pager' ] . '" class="scroll" style="text-align:center;"></div>' ; <br/>
return $html ; <br/>
}
このメソッドで何が起こるか
1)jqGridをインストールするためのパラメーターは、グリッドを表示するために必要な完全な形式に削減されます。
2)スクリプトとスタイルシートを追加する
3)タグは、グリッド自体とページネーションを表示するために書かれています。
4)onLoadイベントが追加され、クライアントのグリッドが初期化されます。
ブートストラップにヘルパーを登録します
$ view-> addHelperPath( 'Xms / ZendX / JQuery / View / Helper /'、 'Xms_ZendX_JQuery_View_Helper');
ビュースクリプトで、ヘルパーを呼び出してグリッドを取得します
<?= $ this-> jqGrid( "jqGrid"、$ this-> jqGridParams); ?>
jqGridParamsは次のようにコントローラーで作成されます
$columns = Xms_DoctrineX_Table :: getAccessibleColumns ( 'Modules' ) ; <br/>
foreach ( $columns as $key => $val ) { <br/>
$colNames [ ] = $this -> _translate -> _ ( $key ) ; <br/>
$colModel [ ] = array ( "name" => $key , "sortable" => "true" , "align" => "right" ) ; <br/>
} <br/>
$this -> view -> jqGridParams = array ( 'url' => '/cms/modules/index' , <br/>
'colNames' => $colNames , <br/>
'colModel' => $colModel , <br/>
) ;
$columns = Xms_DoctrineX_Table :: getAccessibleColumns ( 'Modules' ) ; <br/>
foreach ( $columns as $key => $val ) { <br/>
$colNames [ ] = $this -> _translate -> _ ( $key ) ; <br/>
$colModel [ ] = array ( "name" => $key , "sortable" => "true" , "align" => "right" ) ; <br/>
} <br/>
$this -> view -> jqGridParams = array ( 'url' => '/cms/modules/index' , <br/>
'colNames' => $colNames , <br/>
'colModel' => $colModel , <br/>
) ;
列のセットが動的に作成され、パラメーターとしてビュースクリプトに渡されます。 これは、利用可能なフィールドのセットが常に変化しているため、ユーザーがアクセスできるフィールドをグリッドに表示できるようにするためです。
それはすべてsobsnoです。 結果は、権限に応じてさまざまなフィールドのセットを持つ動的なグリッドです。