https://wiki.basercms.net/index.php?title=ver4/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E4%BD%9C%E6%88%90%E3%82%AC%E3%82%A4%E3%83%89&feed=atom&action=history
ver4/プラグイン作成ガイド - 変更履歴
2024-03-28T15:11:56Z
このウィキのこのページに関する変更履歴
MediaWiki 1.23.5
https://wiki.basercms.net/index.php?title=ver4/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E4%BD%9C%E6%88%90%E3%82%AC%E3%82%A4%E3%83%89&diff=3331&oldid=prev
2020年11月25日 (水) 15:37にYamamotoによる
2020-11-25T15:37:42Z
<p></p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">←前の版</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">2020年11月25日 (水) 15:37時点における版</td>
</tr><tr><td colspan="2" class="diff-lineno">行25:</td>
<td colspan="2" class="diff-lineno">行25:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>}</syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>}</syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>## <del class="diffchange diffchange-inline">ビューの利用</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>## <ins class="diffchange diffchange-inline">ビューの利用とプレフィックス</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">プラグインでビューを利用する場合には、特別なルールはありませんが、エレメントを利用する場合には、テーマのエレメントにて問題なく、上書きできるように、ファイル名の先頭にプラグイン名をプレフィックスとして付加する事をおすすめします。</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">プラグインでビューを利用する場合には、特別なルールはありません。エレメントを利用する場合には、テーマのエレメントで問題なく上書きできるように、ファイル名の先頭にプラグイン名をプレフィックスとして追加しましょう。</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">これは、baserCMSでは、テーマ内にプラグインのエレメントと同名のエレメントを配置するする事で、プラグインのエレメントを直接書き換えず、カスタマイズする事ができるのですが、他のプラグインで、同名のエレメントが存在する場合、どちらか片方のエレメントしか上書きできなくなってしまう為です。</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">テーマ内にプラグインのエレメントと同名のエレメントを配置することで、プラグインのエレメントを直接書き換えず、カスタマイズすることができるのですが、他のプラグインで、同名のエレメントが存在する場合、どちらか片方のエレメントしか上書きできなくなってしまうためです。</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><pre>Sample プラグインに single エレメントを配置する場合</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><pre>Sample プラグインに single エレメントを配置する場合</div></td></tr>
</table>
Yamamoto
https://wiki.basercms.net/index.php?title=ver4/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E4%BD%9C%E6%88%90%E3%82%AC%E3%82%A4%E3%83%89&diff=3241&oldid=prev
Tommy: array() をショートシンタックスでの記述に変更
2019-02-01T02:51:52Z
<p>array() をショートシンタックスでの記述に変更</p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">←前の版</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">2019年2月1日 (金) 02:51時点における版</td>
</tr><tr><td colspan="2" class="diff-lineno">行262:</td>
<td colspan="2" class="diff-lineno">行262:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>class SampleControllerEventListener extends BcControllerEventListener {</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>class SampleControllerEventListener extends BcControllerEventListener {</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> // 登録先イベントの定義</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> // 登録先イベントの定義</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> public $events = <del class="diffchange diffchange-inline">array(</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> public $events = <ins class="diffchange diffchange-inline">[</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> 'Users.beforeRender',</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> 'Users.beforeRender',</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> 'Users.afterEdit',</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> 'Users.afterEdit',</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> 'initialize'</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> 'initialize'</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> <del class="diffchange diffchange-inline">)</del>;</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <ins class="diffchange diffchange-inline">]</ins>;</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> // ユーザーコントローラーにおいてレンダリング直前に呼び出される</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> // ユーザーコントローラーにおいてレンダリング直前に呼び出される</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> public function usersBeforeRender(CakeEvent $event) {</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div> public function usersBeforeRender(CakeEvent $event) {</div></td></tr>
</table>
Tommy
https://wiki.basercms.net/index.php?title=ver4/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E4%BD%9C%E6%88%90%E3%82%AC%E3%82%A4%E3%83%89&diff=3240&oldid=prev
Tommy: 4系ではデータベースのテーブル名に pg_ プレフィックスは必要ないため記述を削除
2019-02-01T02:51:06Z
<p>4系ではデータベースのテーブル名に pg_ プレフィックスは必要ないため記述を削除</p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">←前の版</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">2019年2月1日 (金) 02:51時点における版</td>
</tr><tr><td colspan="2" class="diff-lineno">行54:</td>
<td colspan="2" class="diff-lineno">行54:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>データベースは MySQL をベースに開発を行なってください。<br /> MySQLを利用する事により、適切なスキーマファイルを生成する事ができます。</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>データベースは MySQL をベースに開発を行なってください。<br /> MySQLを利用する事により、適切なスキーマファイルを生成する事ができます。</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">テーブル名は、インストール時に設定したプレフィックスと、純粋なテーブル名の間にプラグイン用のプレフィックス「pg_」を付加します。</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">テーブル名は、インストール時に設定したプレフィックスを付加します。</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><pre><del class="diffchange diffchange-inline">(例)インストール時のプレフィックスが「bc_」で、純粋なテーブル名が、「pens」の場合</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><pre><ins class="diffchange diffchange-inline">(例)インストール時のプレフィックスが「bc_」で、テーブル名が、「pens」の場合</ins></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline"> bc_pg_pens</del></pre></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline"> bc_pens</ins></pre></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><small>※ SQLiteはインストール時のプレフィックスはありません。</small></div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><small>※ SQLiteはインストール時のプレフィックスはありません。</small></div></td></tr>
</table>
Tommy
https://wiki.basercms.net/index.php?title=ver4/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E4%BD%9C%E6%88%90%E3%82%AC%E3%82%A4%E3%83%89&diff=2965&oldid=prev
Tommy: baserCMS 4系に合わせてプラグインのコントローラーとモデルが継承すべきクラスを修正
2018-10-31T05:28:19Z
<p>baserCMS 4系に合わせてプラグインのコントローラーとモデルが継承すべきクラスを修正</p>
<table class='diff diff-contentalign-left'>
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr style='vertical-align: top;'>
<td colspan='2' style="background-color: white; color:black; text-align: center;">←前の版</td>
<td colspan='2' style="background-color: white; color:black; text-align: center;">2018年10月31日 (水) 05:28時点における版</td>
</tr><tr><td colspan="2" class="diff-lineno">行11:</td>
<td colspan="2" class="diff-lineno">行11:</td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>## コントローラーの利用</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>## コントローラーの利用</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>コントローラーでは、baserCMS にパッケージされている <del class="diffchange diffchange-inline">BcPluginAppController </del>を継承します。<br /> これにより、baserCMSコントローラーの基本機能が実装できます。</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>コントローラーでは、baserCMS にパッケージされている <ins class="diffchange diffchange-inline">AppController </ins>を継承します。<br /> これにより、baserCMSコントローラーの基本機能が実装できます。</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="php"></div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="php"></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">App::uses('BcPluginAppController', 'Controller');</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>class DemoController extends <ins class="diffchange diffchange-inline">AppController </ins>{</div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>class DemoController extends <del class="diffchange diffchange-inline">BcPluginAppController</del>{</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>}</syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>}</syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>## モデルの利用</div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>## モデルの利用</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>プラグインで利用するモデルでは、baserCMS にパッケージされている <del class="diffchange diffchange-inline">BcPluginAppModel </del>を継承させます。<br /> これにより、baserCMSモデルの基本機能が実装できます。</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>プラグインで利用するモデルでは、baserCMS にパッケージされている <ins class="diffchange diffchange-inline">AppModel </ins>を継承させます。<br /> これにより、baserCMSモデルの基本機能が実装できます。</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="php"><del class="diffchange diffchange-inline">App::import('Model', 'BcPluginAppModel');</del></div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><syntaxhighlight lang="php"></div></td></tr>
<tr><td class='diff-marker'>−</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>class Demo extends <del class="diffchange diffchange-inline">BcPluginAppModel </del>{</div></td><td class='diff-marker'>+</td><td style="color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>class Demo extends <ins class="diffchange diffchange-inline">AppModel </ins>{</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>}</syntaxhighlight></div></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"><div>}</syntaxhighlight></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td><td class='diff-marker'> </td><td style="background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;"></td></tr>
</table>
Tommy
https://wiki.basercms.net/index.php?title=ver4/%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E4%BD%9C%E6%88%90%E3%82%AC%E3%82%A4%E3%83%89&diff=2024&oldid=prev
Baser: ページの作成:「<metadesc>baserCMS は、独自のプラグイン管理機能を持ち、プラグインのインストール、有効化、無効化の仕組み、また、本体での...」
2016-09-18T08:48:12Z
<p>ページの作成:「<metadesc>baserCMS は、独自のプラグイン管理機能を持ち、プラグインのインストール、有効化、無効化の仕組み、また、本体での...」</p>
<p><b>新規ページ</b></p><div><metadesc>baserCMS は、独自のプラグイン管理機能を持ち、プラグインのインストール、有効化、無効化の仕組み、また、本体での処理を横取りするイベント機能を提供しています。</metadesc><br />
<br />
baserCMS は、独自のプラグイン管理機能を持ち、プラグインのインストール、有効化、無効化の仕組み、また、本体での処理を横取りするイベント機能を提供しています。<br /> 基本的には、CakePHP のプラグイン開発に準じ、CakePHP用のプラグインも利用する事ができますが、baserCMS の管理機能に認識させる為には、baserCMS独自のルールを組み込む必要があります。<br />
<br />
## CakePHP のプラグイン開発に準じてプラグインを開発する<br />
<br />
前述したとおり、baserCMS は基本的に CakePHP の開発手法に準じて開発されていますので、プラグインについても CakePHP の開発に準ずる必要があります。 CakePHP のプラグイン開発については次のリンク先を参考にしてください。<br />
<br />
* [CakePHP - プラグイン][1]<br />
<br />
## コントローラーの利用<br />
<br />
コントローラーでは、baserCMS にパッケージされている BcPluginAppController を継承します。<br /> これにより、baserCMSコントローラーの基本機能が実装できます。<br />
<br />
<syntaxhighlight lang="php"><br />
App::uses('BcPluginAppController', 'Controller');<br />
class DemoController extends BcPluginAppController{<br />
}</syntaxhighlight><br />
<br />
## モデルの利用<br />
<br />
プラグインで利用するモデルでは、baserCMS にパッケージされている BcPluginAppModel を継承させます。<br /> これにより、baserCMSモデルの基本機能が実装できます。<br />
<br />
<syntaxhighlight lang="php">App::import('Model', 'BcPluginAppModel');<br />
class Demo extends BcPluginAppModel {<br />
}</syntaxhighlight><br />
<br />
## ビューの利用<br />
<br />
プラグインでビューを利用する場合には、特別なルールはありませんが、エレメントを利用する場合には、テーマのエレメントにて問題なく、上書きできるように、ファイル名の先頭にプラグイン名をプレフィックスとして付加する事をおすすめします。<br />
<br />
これは、baserCMSでは、テーマ内にプラグインのエレメントと同名のエレメントを配置するする事で、プラグインのエレメントを直接書き換えず、カスタマイズする事ができるのですが、他のプラグインで、同名のエレメントが存在する場合、どちらか片方のエレメントしか上書きできなくなってしまう為です。<br />
<br />
<pre>Sample プラグインに single エレメントを配置する場合<br />
<br />
/PluginName/View/Elements/sample_single.php</pre><br />
<br />
## ヘルパーの利用<br />
<br />
プラグインでもヘルパーを利用する事ができますが、テーマと違い、配置しただけでは利用できませんので注意が必要です。<br /> プラグインで呼び出すには、コントローラーに利用するヘルパーを定義します。<br />
<br />
baserCMSのコアでヘルパーを利用する為には、イベントを利用します。<br /> コントローラーイベントの startup や initialize で、ヘルパーの追加処理を記述します。<br />
<br />
## インストール用のスキーマと初期データを準備する<br />
<br />
データベースを利用するプラグインの場合は、テーブル定義用のスキーマファイルを用意します。また、初期データを登録する場合は、CSVファイルで作成します。<br />
<br />
### スキーマファイル、初期データの作成と設置<br />
<br />
スキーマファイルの作成は「データメンテナンス」を利用する事で簡単に行う事ができます。<br /><br />
<small>※ スキーマファイルとは、CakePHPで利用できる形式のデータベーステーブルの定義ファイルです。</small><br />
<br />
#### 1.データベースに任意のテーブルを作成する<br />
<br />
データベースは MySQL をベースに開発を行なってください。<br /> MySQLを利用する事により、適切なスキーマファイルを生成する事ができます。<br />
<br />
テーブル名は、インストール時に設定したプレフィックスと、純粋なテーブル名の間にプラグイン用のプレフィックス「pg_」を付加します。<br />
<br />
<pre>(例)インストール時のプレフィックスが「bc_」で、純粋なテーブル名が、「pens」の場合<br />
bc_pg_pens</pre><br />
<br />
<small>※ SQLiteはインストール時のプレフィックスはありません。</small><br />
<br />
テーブルには基本的に次のフィールドを含めてください。<br />
<br />
* id・・・一意のID番号(プライマリーキー用)<br />
* created・・・レコード作成日(自動更新されます)<br />
* modified・・・レコード更新日(自動更新されます)<br />
<br />
#### 2.データを登録する<br />
<br />
管理システムから、またはデータベースに直接、インストール時の初期値となるデータを登録します。<br />
<br />
#### 3.データメンテナンスよりバックアップデータをダウンロードする<br />
<br />
データメンテナンスから、テーブル定義の元となるスキーマファイルと、初期データの元となるCSVファイルのセットがダウンロードできます。<br />
<br />
#### 4.生成されたスキーマファイルを設置する<br />
<br />
インストール時に実行するスキーマファイルは以下のパスに設置します。<br />
<br />
<pre>{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/Config/Schema/{プレフィックスなしのテーブル名}.php<br />
</pre><br />
<br />
#### 5.生成されたCSVデータのクリーニングを行う。<br />
<br />
id / created / modified の値を手作業で空にして保存します。<br />
<br />
#### 6.作成したCSVファイルを設置する<br />
<br />
インストール時に実行するCSVファイルは以下のパスに設置します。<br />
<br />
<pre>{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/Config/data/default/{プレフィックスなしのテーブル名}.csv<br />
</pre><br />
<br />
### 初期データファイルの仕様<br />
<br />
初期データファイルはCSVファイルで作成します。CSVファイルは次の仕様となります。<br />
<br />
* 文字コードは、Shift-JIS<br />
* 各フィールドをカンマで区切る<br />
* 各フィールドをダブルコーテーション(")で囲む<br />
* フィールド内のダブルコーテーションは、ダブルコーテーションでエスケープする<br />
* 1行目は、フィールド名の定義とする<br />
* id / created / modified の値は空にする<br />
<br />
<pre>(例)<br />
"id", "name","title","created","modified"<br />
"","test","簡単な""プラグイン""の作り方","",""<br />
</pre><br />
<br />
## インストール用設定ファイルを準備する<br />
<br />
インストール画面で利用する設定値を記述する設定ファイルは、config.php というファイル名で以下のパスに設置します。<br />
<br />
<pre>{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/config.php</pre><br />
<br />
設定ファイルには下記の設置値を記述します。<br />
<br />
<syntaxhighlight lang="php">$title = '{プラグイン名(日本語可)}';<br />
$description = '{プラグインの説明文}';<br />
$adminLink = '{管理画面用初期ページへのリンク}';<br />
$installMessage = '{インストール画面に表示するメッセージ}';<br />
$author = '{プラグインの作成者名}';<br />
$url = '{プラグイン作成者のホームページURL}';</syntaxhighlight><br />
<br />
## インストールスクリプトを準備する<br />
<br />
インストールスクリプトは init.php というファイル名で以下のパスに設置します。<br /> このスクリプトは、PluginsController の admin_add メソッドより呼び出されます。<br />
<br />
<pre>{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/Config/init.php</pre><br />
<br />
インストール用の スキーマファイル、初期データファイルを登録するには、下記メソッドを呼び出します。<br />
<br />
<syntaxhighlight lang="php">$this->Plugin->initDb('plugin', '{プラグイン名}');</syntaxhighlight><br />
<br />
<small>※ baserCMS3より引数が変更となっています。</small><br />
<br />
## バージョンファイルを準備する<br />
<br />
プラグインのバージョンを示すバージョンファイルを次のパスに設置します。<br />
<br />
<pre>{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/VERSION.txt</pre><br />
<br />
バージョン番号は、上記ファイルの1行目に記述します。<br /> baserCMSでは、3区切りまでの[バージョン番号][2]を認識します。<br />
<br />
<pre>(例)1.2.3・・・{メジャーバージョン}.{マイナーバージョン}.{パッチ}</pre><br />
<br />
## プラグインイベント<br />
<br />
baserCMSのプラグインは、本体に新しいコンテンツとしての機能を追加する以外に、本体の既にある機能の拡張を行ったり、振る舞いや表示内容を変えるという事も可能です。<br />
<br />
本体機能の拡張を行うには、CakePHPの CakeEvent の拡張である[ BaserEvent ][3]を利用します。<br /> この機能は、コア本体が提供するイベントである の beforeFilter や、ヘルパーの afterLayout 等のイベントをプラグイン側から簡単に処理を割りこませる事ができます。<br />
<br />
* [CakePHP イベントシステム][4]<br />
<br />
これにより本体のビューが出力する内容を書き換えたり、baserCMSの管理システム内の編集画面に新しいフィールドを追加するという事ができるようになります。<br /> 例えば、Javascriptで各イベントに対し、イベントリスナーを利用してコールバック処理を登録する 事をイメージするとわかりやすいかもしれません。<br />
<br />
処理を割りこませる為には、プラグインのフォルダ内に Event フォルダを作成し、そこにイベントリスナークラスを作成します。<br /> events プロパティにコールバックメソッド名を配列で定義し、同クラス内にコールバックメソッドを定義します。<br /> コールバックメソッド名は、events プロパティに登録したイベント名からドット(.)を除外した上でロウワーキャメルケースに変換した名称とします。<br /> プラグインのイベントの場合は、イベント名の最初にプラグイン名を付加します。<br />
<br />
<pre>Mail.Mail.beforeSendEmail → mailMailBeforeSendEmail</pre><br />
<br />
### コントローラーイベントリスナ<br />
<br />
コントローラーのイベントにコールバック処理を登録するには、下記のパスにクラスファイルを設置します。<br /> BcControllerEventListener を継承します。<br />
<br />
<syntaxhighlight lang="php"><br />
● {プラグイン名}ControllerEventListener<br />
{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/Event/{プラグイン名}ControllerEventListener.php<br />
<br />
class PluginNameControllerEventListener extends BcControllerEventListener {<br />
}<br />
</syntaxhighlight><br />
<br />
### モデルイベントリスナ<br />
<br />
モデルのイベントにコールバック処理を登録するには、下記のパスにクラスファイルを設置します。<br /> BcModelEventListener を継承します。<br />
<br />
<syntaxhighlight lang="php">● {プラグイン名}ModelEventListener<br />
{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/Event/{プラグイン名}ModelEventListener.php<br />
<br />
class PluginNameModelEventListener extends BcModelEventListener {<br />
}</syntaxhighlight><br />
<br />
### ビューイベントリスナ<br />
<br />
ビューのイベントにコールバック処理を登録するには、下記のパスにクラスファイルを設置します。<br /> BcViewEventListener を継承します。<br />
<br />
<syntaxhighlight lang="php">● {プラグイン名}ViewEventListener<br />
{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/Event/{プラグイン名}ViewEventListener.php<br />
<br />
class PluginNameViewEventListener extends BcViewEventListener {<br />
}</syntaxhighlight><br />
<br />
### ヘルパイベントリスナ<br />
<br />
ヘルパのイベントにコールバック処理を登録するには、下記のパスにクラスファイルを設置します。<br /> BcHelperEventListener を継承します。<br />
<br />
<syntaxhighlight lang="php">● {プラグイン名}HelperEventListener<br />
{baserCMSの設置フォルダ}/app/Plugin/{プラグイン名}/Event/{プラグイン名}HelperEventListener.php<br />
<br />
class PluginNameHelperEventListener extends BcHelperEventListener {<br />
}</syntaxhighlight><br />
<br />
## コールバックメソッド内でのデータの参照方法<br />
<br />
コールバックメソッドでは、引数に CakeEvent を定義します。<br /> 引数名を $event とした場合、イベント固有のデータは、$event->data で参照する事ができます。<br /> また、イベントの発動元のオブジェクトを、$event->subject で参照する事ができます。<br />
<br />
## 登録可能な本体のイベント<br />
<br />
#### コントローラー<br />
<br />
* {CakePHP標準イベント名}(例:beforeRender)<br />
* {ControllerName}.{CakePHP標準イベント名}(例:Users.beforeRender)<br />
* Mail.Mail.beforeSendEmail(メール送信直前)<br />
* Mail.Mail.afterSendEmail(メール送信直後)<br />
* Blog.BlogPosts.afterAdd (ブログ記事追加直後)<br />
* Blog.BlogPosts.afterEdit(ブログ記事編集直後)<br />
* Users.afterAdd(新規ユーザ追加直後)<br />
* Users.afterEdit(既存ユーザ編集直後)<br />
* Pages.afterAdd(新規ページ追加直後)<br />
* Pages.afterEdit(既存ページ編集直後)<br />
<br />
#### ビュー<br />
<br />
* {CakePHPの標準イベント名}(例:beforeLayout)<br />
* {ControllerName}.{CakePHPの標準イベント名}(例:Users.beforeLayout)<br />
* beforeElement(エレメント生成直前)<br />
* afterElement(エレメント生成直後)<br />
* {ControllerName}.beforeElement(エレメント生成直前)<br />
* {ControllerName}.afterElement(エレメント生成直後)<br />
* header(ヘッダーエレメント生成直後)<br />
* footer(フッターエレメント生成直後)<br />
* {ControllerName}.header(ヘッダーエレメント生成直後)<br />
* {ControllerName}.footer(フッターエレメント生成直後)<br />
<br />
#### モデル<br />
<br />
* {CakePHP標準イベント名}(例:beforeFind)<br />
* {ModelName}.{CakePHP標準イベント名}(例:User.beforeFind)<br />
<br />
#### ヘルパー<br />
<br />
* Html.beforeGetLink(リンク取得直前)<br />
* Html.afterGetLink(リンク取得直後)<br />
* Form.beforeCreate(フォーム開始タグ生成直前)<br />
* Form.afterCreate(フォーム開始タグ生成直後)<br />
* Form.beforeEnd(フォーム終了タグ生成直前)<br />
* Form.afterEnd(フォーム終了タグ生成直後)<br />
* Form.beforeInput(フォームパーツタグ生成直前)<br />
* Form.afterInput(フォームパーツタグ生成直後)<br />
* Form.afterForm(メインフォーム生成直後)<br />
* Form.afterOptionForm(オプションフォーム生成直後)<br />
<br />
## プラグインイベントコード例<br />
<br />
Sampleというプラグインで、コアのコントローラーのイベントにコールバックメソッドを登録します。<br />
<br />
<syntaxhighlight lang="php"><br />
/Sample/Event/SampleControllerEventListner.php<br />
<br />
--<br />
class SampleControllerEventListener extends BcControllerEventListener {<br />
// 登録先イベントの定義<br />
public $events = array(<br />
'Users.beforeRender',<br />
'Users.afterEdit',<br />
'initialize'<br />
);<br />
// ユーザーコントローラーにおいてレンダリング直前に呼び出される<br />
public function usersBeforeRender(CakeEvent $event) {<br />
// ビューにサンプルという文字列を引き渡す<br />
$Controller = $event->subject();<br />
$Controller->set('sample', 'sample');<br />
}<br />
// ユーザーコントローラーにおいてユーザー情報更新直後に呼び出される<br />
public function usersAfterEdit(CakeEvent $event) {<br />
// ユーザー情報変更後のデータを参照<br />
var_dump($event->data);<br />
}<br />
// ユーザーコントローラーにおいてアクションが実行される直前に呼び出される<br />
public function initialize(CakeEvent $event) {<br />
// サンプルヘルパーをコントローラーに追加<br />
$Controller = $event->subject();<br />
$Controller->helpers[] = 'Sample';<br />
}<br />
<br />
}<br />
</syntaxhighlight><br />
<br />
[1]: http://book.cakephp.org/2.0/ja/plugins.html<br />
[2]: http://project.e-catchup.jp/projects/basercms/wiki/バージョン番号<br />
[3]: http://wiki.basercms.net/baserCMS%E3%81%AECakePHP%E6%8B%A1%E5%BC%B5%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6<br />
[4]: http://book.cakephp.org/2.0/ja/core-libraries/events.html<br />
<br />
<br />
## プラグインのイベントを簡単に作成する<br />
<br />
[http://lab.e-catchup.jp/catchup/cublank/tree/master blankプラグイン]を利用すると、プラグインのイベントを簡単に作成することができます。<br />
[[Category:開発ガイド]]</div>
Baser