Scaffoldを
Banchaをググってたらフォーラムに到着して出会いました。
見てみたら、マーケットにありますね。。 早速ソースをDLしてざっと眺めるとどうやら
Banchaの仕様に適した(サンプルをデフォルトで実装してくれる様な)
コンフィグビルダ的なプロジェクトでした。 ざっくり言うとExt.grid.Panelをオーバライドして scaffoldコンフィグに反応するようにしてあって BanchaにあったGridコンフィグ、Formコンフィグを作ってくれる 仕組みです。 独自の実装はbeforeBuildなり、afterBuildなりで調整実装します。 早速お試しを。
設置
どこに設置するのが良いのかわからなかったけど、 ひとまずextと同階層に設置することしました。▾ banchajs/ <--(これ)
bancha-scaffold-debug.js
bancha-scaffold-production.js
bancha-scaffold.js
▸ css/
▸ ext/
▸ files/
▸ img/
▸ js/
.DS_Store
.htaccess
bancha.php*
favicon.ico
index.html
index.php
test.php
ロード
index.htmlに追加します。しばらくはコード見つつ使うと思うのでデバグ版です。<script type="text/javascript" charset="utf-8" src="./banchajs/bancha-scaffold-debug.js"></script>
サンプルを改造(View)
ビルドコンフィグ内で、デフォルトの設定をしてくれているので なんもいじらんのであれば、、// {{{ 'BE.view.Usergrid'
/**
* @class BE.view.Usergrid
* desctription
*/
Ext.define('BE.view.Usergrid', {
// {{{ extend
extend : 'Ext.grid.Panel',
// }}}
// {{{ alias
alias : 'widget.usergrid',
scaffold :'Bancha.model.User'
// }}}
});
// }}}
これだけでOK。そう、これだけでOKです。
scaffoldにBanchaが提供するモデル名を設定します。※このscaffold、オブジェクト指定でscaffold:{target:'Bancha.model.User'}として 実装することも可能ですが、その際はModelManagerにすでに登録されていることが前提となるので 何らかの問題で引っかかったときはこのあたりを見てみるといいかもです。
このパネルのinitConponentなりでBancha.getModel('User')とかして ModelManagerに登録しておくひつようがありますね。。
Store(サンプルを改造)
実はストアはBanchaのScaffoldがModelを利用して生成してくれるので Storeは必要ありません。削除しちゃいます。(わかりやすくコメントアウトとしておきます)Controller(サンプルを改造)
各ボタンの実装もハンドラで直接結びつけちゃっているので この例だとコントローラも必要なくなっちゃいます。 (通常は必要になるとは思うのですけど)実行してみる(画像が出ない)
画像が出ない。。。 そう、内部で設定される画像の設定、パスが通ってません。 icon-add、icon-save、icon-reset、icon-deleteをCSSに定義しておきます。.icon-add {
background-image: url(../icons/add.png) ! important;
}
.icon-delete: {
background-image: url('../icons/delete.png') ! important;
}
.icon-save {
background-image: url('../icons/disk.png') ! important;
}
.icon-reset {
background-image: url('../icons/arrow_undo.png') ! important;
}
あと、Grid内のactioncolumnの画像はパス指定になっているので
それを変更しなくてはなりません。。
なんかとりあえずの対応になってしまうけど、、afterBuild : function (gridconfig) {
// 削除ボタンコンフィグのreconfig
var i;
for (i = 0; i< gridconfig.columns.length; i++ ){
if (gridconfig.columns[i].xtype == 'actioncolumn'){
Ext.apply(gridconfig.columns[i].items[0],{icon:'js/src/resources/icons/delete.png'});
}
}
}
ひとまずxtypeで引っ掛けてパス変えちゃいました。内部で固定設定されているメッセー文言とか、、
そとに口を引っ張りだして加工できるようにしたいですね。
![]() |
userテーブルのBanchaScaffoldでの表示 |
現状況
▾ public_html/
▾ app/
▸ Config/
▸ Console/
▸ Controller/
▸ Lib/
▸ Locale/
▸ Model/
▸ Plugin/
▸ Test/
▸ tmp/
▸ Vendor/
▸ View/
▾ webroot/
▾ banchajs/
bancha-scaffold-debug.js
bancha-scaffold-production.js
bancha-scaffold.js
▸ css/
▸ ext/
▸ files/
▸ img/
▾ js/
▾ src/
▾ app/
▾ controller/
Main.js
Usergrid.js
▾ model/
▾ store/
user.js
▾ view/
Usergrid.js
Viewport.js
▾ resources/
▾ css/
style.css
▾ icons/
add.png*
arrow_undo.png*
delete.png*
disk.png*
image_add.png*
user_edit.png*
app.js
empty
.DS_Store
.htaccess
bancha.php*
favicon.ico
index.html
index.php
test.php
.DS_Store
.htaccess
index.php
▸ lib/
▸ plugins/
▸ vendors/
.gitignore
.htaccess
.travis.yml
build.properties
build.xml
index.php
README
0 件のコメント:
コメントを投稿