設定やパラメータでViewを切り替えるのもNGな設計にしているので
(例えば照会と入力は別のBlockにしています)
1つのBlockで複数の挙動をと言うのは今回は採用できないですねぇ(^^;
今回は共通modelとcontrollerを持つPackegeと
それ以外のある程度の塊で分けたPackegeにするべきでしょうね。
Re: PackageのバージョンアップでBlockが増えない?
2012年11月4日 at 16:45
tomoacさん、こんにちは。
今作成しているpackegeはこのようなディレクトリ構成で作成しています。
blocksの下にはこれから100前後のblockが増えていきますので
packegeのアップデートで認識されなかったら、packegeを分けて
行かないといけないなぁと思った次第です。
ただ、packegesの下のmodelsやcontrollersにpackege全体で使う
共通のclassがあるのでちょっと困っています。
packeges
org_packeges_name
themes
models
controllers
blocks
block001
block002
block003
...
...
タグ:
Re: PackageのバージョンアップでBlockが増えない?
2012年11月4日 at 16:56
アップデート時にブロックが増えるケースが思いつかないので事例をお伝えできないのですが、インストール時にブロックを追加するものはたくさんあると思います。
これと同じことをupdateメソッドでやれば行けると思います!
public function install() {
$pkg = parent::install();
// install block
BlockType::installBlockTypeFromPackage('block_name', $pkg);
}
これと同じことをupdateメソッドでやれば行けると思います!
Re: PackageのバージョンアップでBlockが増えない?
2012年11月4日 at 17:40
作成班と検証班でわかれて作業をしていて、Packegeの更新のたびに
アンインストール・新規インストールを繰りかえしていて、
そのたびにBlockが消えてしまうので、検証班が音を上げてしまいました(^^;
今、Packege.php を読んでいたのですが、interfaceにはinstallとuninstallしかないようですね。
interface Installable {
public function install();
public function uninstall();
}
管理画面でアップデートが実行された時に、BlockListを読み直して
refreshしているようですが、BlockListに追加するタイミングがないような気がします(^^;
public function upgrade() {
Package::installDB($this->getPackagePath() . '/' . FILENAME_PACKAGE_DB);
// now we refresh all blocks
$items = $this->getPackageItems();
if (is_array($items['block_types'])) {
foreach($items['block_types'] as $item) {
$item->refresh();
}
}
}
アンインストール・新規インストールを繰りかえしていて、
そのたびにBlockが消えてしまうので、検証班が音を上げてしまいました(^^;
今、Packege.php を読んでいたのですが、interfaceにはinstallとuninstallしかないようですね。
interface Installable {
public function install();
public function uninstall();
}
管理画面でアップデートが実行された時に、BlockListを読み直して
refreshしているようですが、BlockListに追加するタイミングがないような気がします(^^;
public function upgrade() {
Package::installDB($this->getPackagePath() . '/' . FILENAME_PACKAGE_DB);
// now we refresh all blocks
$items = $this->getPackageItems();
if (is_array($items['block_types'])) {
foreach($items['block_types'] as $item) {
$item->refresh();
}
}
}
Re: PackageのバージョンアップでBlockが増えない?
2012年11月4日 at 18:05
updateじゃなくてupgradeメソッドでした。。
やったことはないですが作成したパッケージのcontrollerでupgradeメソッドを継承してブロックをインストールすればいいと思います。
やったことはないですが作成したパッケージのcontrollerでupgradeメソッドを継承してブロックをインストールすればいいと思います。
Your post has been saved and will be published after approval by the forum moderator.
tomoac
Re: PackageのバージョンアップでBlockが増えない?
参考にですが、1つブロックで、設定を変えて100の挙動というのではだめなんですか?
ちなみに、他のパッケージのモデルを横から使うことはできますよ。