-
Notifications
You must be signed in to change notification settings - Fork 6
SamplesPlugin.php
オープンソース・ワークショップ 永原 篤 edited this page Mar 11, 2022
·
18 revisions
以下、部分ごとに解説します。
namespace App\PluginsOption\User\Samples;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Validator;
use App\Models\Common\Buckets;
use App\Models\Common\Frame;
use App\ModelsOption\User\Samples\Sample;
use App\ModelsOption\User\Samples\SamplePost;
use App\PluginsOption\User\UserPluginOptionBase;
- namespace はディレクトリと合わせて定義
- Illuminate\Support\Collection アクションメソッドの戻り値に使用します。
- Illuminate\Support\Facades\Validator 入力エラー定義に使用します。
- App\Models\Common\Buckets 共通バケツ
- App\Models\Common\Frame フレーム
- App\ModelsOption\User\Samples\Sample サンプルプラグインのバケツ
- App\ModelsOption\User\Samples\SamplePost サンプルプラグインの記事
- App\PluginsOption\User\UserPluginOptionBase オプションプラグインを開発する場合の継承元
class SamplesPlugin extends UserPluginOptionBase
{
/**
* 変更時のPOSTデータ
*/
public $post = null;
- クラス定義と継承指定
- $post は記事が指定されたときのための変数
/**
* 関数定義(コアから呼び出す)
*/
public function getPublicFunctions()
{
// 標準関数以外で画面などから呼ばれる関数の定義
$functions = array();
$functions['get'] = ['index'];
return $functions;
}
- 標準関数は config\cc_role.php の CC_METHOD_AUTHORITY と CC_METHOD_REQUEST_METHOD で定義されています。
- 標準関数にないものは、ここで定義することで、画面から呼ばれて実行可能になります。
/**
* 権限定義
*/
public function declareRole()
{
// 権限チェックテーブル
$role_check_table = array();
return $role_check_table;
}
- 標準関数以外の関数を定義する場合は、ここで関数ごとの許可する権限を定義します。
- このサンプルプラグインでは、標準関数以外はありませんが、指定する場合は以下のように指定します。
$role_check_table['remote'] = array('role_article');
/**
* プラグインのバケツ取得関数
*/
private function getPluginBucket($bucket_id)
{
// プラグインのメインデータを取得する。
return Sample::firstOrNew(['bucket_id' => $bucket_id]);
}
- プラグインのバケツ取得。自クラス内でのみ使用するため private 指定します。
/**
* POST取得関数(コアから呼び出す)
* コアがPOSTチェックの際に呼び出す関数
*/
public function getPost($id, $action = null)
{
if (is_null($action)) {
// プラグイン内からの呼び出しを想定。処理を通す。
} elseif (in_array($action, ['index', 'save', 'delete'])) {
// コアから呼び出し。posts.update|posts.deleteの権限チェックを指定したアクションは、処理を通す。
} else {
// それ以外のアクションは null で返す。
return null;
}
// 一度読んでいれば、そのPOSTを再利用する。
if (!empty($this->post)) {
return $this->post;
}
// 指定された記事を取得
$this->post = SamplePost::firstOrNew(['id' => $id]);
return $this->post;
}
- 記事データを取得する関数。コアからも呼ばれるために、public 指定します。
- インスタンス変数 $this->post にして、シングルトンにしているのは、処理速度を向上させるためです。
/**
* データ初期表示関数
* コアがページ表示の際に呼び出す関数
*
* @method_title 記事編集
* @method_desc 記事一覧を表示します。
* @method_detail
*/
public function index($request, $page_id, $frame_id, $post_id = null)
{
// バケツ未設定の場合はバケツ空テンプレートを呼び出す
if (!isset($this->frame) || !$this->frame->bucket_id) {
// バケツ空テンプレートを呼び出す。
return $this->view('empty_bucket');
}
// バケツデータ取得
$sample = $this->getPluginBucket($this->buckets->id);
// 記事一覧
$posts = SamplePost::where('sample_id', $sample->id)->get();
// 表示テンプレートを呼び出す。
return $this->view('index', [
'sample' => $sample,
'posts' => $posts,
]);
}
- index 関数は、画面が開いた際にコアが最初に呼び出す関数です。
- バケツの存在チェック、バケツデータ、記事一覧を取得して画面に渡します。
- home
- Overview
- Install
- Install (インストール)(Linux等へのインストール:root権限ある場合)
-
Install-sakura(さくらのレンタルサーバ)
- Install-sakura-root(ドキュメントルート版)
- Install-Xserver(XServer)
- Install-lolipop(ロリポップ-ハイスピードプラン)
- Install-ColorfulBox(カラフルボックス)
- install-CentOS7+PHP7
- Install-XAMPP(Windows+XAMPP)
- install-Docker
- Update
- Plans
- Data
- File Upload
- Design
- Theme(テーマ)
- Font-Icon(アイコン)
- Button(ボタン)
- Display of input error(入力エラーの表示)
- Multi Language
- Policies
- Plugin
- Basic function(基本の関数)
- Opac(蔵書管理)
- OpeningCalendar(開館カレンダー)
- Template(テンプレート)
- Cabinet(キャビネット)
- Whatsnew(新着)
- Search(サイト内検索)
- Approval(承認機能)
- Holidays(祝日管理)
- Menu(メニュー)
-
OriginalPlugin(オリジナル・プラグイン開発)
- OriginalPluginFiles(ファイル一覧)
- Sample.php
- SamplePost.php
- plugin.ini
- SamplesPlugin.php
- create_samples_table.php
- create_sample_posts_table.php
- samples_frame_edit_tab.blade.php
- card/index.blade.php
- card/template.ini
- default/bucket.blade.php
- default/edit.blade.php
- default/index.blade.php
- default/list_buckets.blade.php
- default/show.blade.php
- default/template.ini
- WYSIWYG
- Session
- Programing tips
- Rule(ルール)
- Laravel method tips
- Laravel reference pages
- PHP
- phpcs
- Datetimepicker(日付入力)
- Hook(処理のフック)
- SQL
- Pull-Request(Web画面上)
- Post
- Optimize
- Composer
- npm
- コントローラー側の$this--can()-の調査
- API (外部サービスAPI)
- Test Case(テストケース)
- memo(永原のメモ)
- TCPDF(実装サンプル)
- Phpunit(ユニットテスト)
-
Dusk(ブラウザテスト)
- Github-Actions-Dusk(Github Actionsでブラウザテスト)
- Dusk-Manual(マニュアル自動生成)
- Develop-Windows(Windows開発環境)
- users_columns(ユーザ任意項目)
- container-page-beta(コンテナ方式(ページ)対応(ベータ版))
- Migration
- Other
- Link
- MultiLanguage(多言語化の際の注意点)