ZendX_JQuery + jqGrid

Zend / Doctrineバンドルのテーマの継続。

テーブルからのデータのページ付けの問題を解決する必要があることを考えると、ツールとして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です。 結果は、権限に応じてさまざまなフィールドのセットを持つ動的なグリッドです。



All Articles