コントローラ - Controller_Baseクラス
ここでは、コントローラの基底クラスであるBase\Controller_Base
について説明いたします
また、多言語対応のアプリのために、多言語化についても説明いたします
Controller_Baseが記述されているファイル
Controller_Baseクラスは、fuel/packages/base/classes/controller/base.php
に定義されています
このクラスでは、before
メソッドと_init
メソッド、
_initメソッドで使用しているユーティリティを定義しています
beforeメソッド
beforeメソッドでしていることは以下の通りです
- ユーザがアプリにログイン済みなら、DBからそのユーザ情報と企業情報を取得する
ログインをしていればこのプロパティに自動でセットします
このクラスを継承したコントローラであれば$this->company
と$this->user
からアクセスできます
company
, user
プロパティのデフォルト値はnull
です
プロパティの値がnullだったらユーザがログインしていないと判定することができます
_initメソッド
_initメソッドでしていることは以下の通りです
- ユーザの設定言語を取得し
- その言語にそった言語ファイルのロードをする
多言語対応については次章で説明します
abstract class Controller_Base extends Controller_Template
{
// ...
public static function _init() {
// 言語のセット
$locale = self::getLocale($_SERVER['HTTP_ACCEPT_LANGUAGE']);
\Config::set('language', $locale);
// 言語ファイルのロード
\Lang::load('common.yml', 'common');
\Lang::load('model.yml', 'model');
\Lang::load('page.yml', 'page');
\Lang::load('message.yml', 'message');
}
}
多言語化対応
ネクストエンジンアプリ基盤では、多言語化対応するための処理が記述されています
言語の設定処理(_initメソッド)と、言語ファイルは既に作成済みです
言語ファイルはfuel/app/lang
以下に配置されています
en
が英語、ja
が日本語のファイルとなっています
言語フォルダの命名や、詳しい仕様方法などは公式ドキュメントをご覧下さい
_initメソッドでは4つの言語ファイルを読み込んでいます
この4ファイルの使い分けについては下記の表を御覧下さい
ファイル名 | 使用方法 |
---|---|
common.yml | アプリ・システム全体で使用する共通の文言を記述する |
model.yml | モデルのデータを多言語化するための文言を記述する |
page.yml | ページに表示する、汎用的でない文言を記述する |
message.yml | エラーメッセージや通知メッセージなど、ユーザへ知らせるメッセージを記述する |
上記以外に言語ファイルを作成することも、既存の言語ファイルを削除することも可能です
その際は、言語ファイルに合わせて必ず_initメソッドを変更して下さい
多言語対応のデモとして、fuel/app/views/error/index.php
を説明いたします
<h1><?= __('page.error.title') ?></h1>
<p><?= __('page.error.suggestion') ?></p>
<p><a href="https://base.next-engine.org/inquiries/" target="_blank"><?= __('page.error.support_page') ?></a></p>
Controller_Baseクラスを継承したコントローラであれば、
コントローラ側で多言語対応について気を配る必要はありません
ビュー側で、ページに表示する文言を取得し、表示します
このページで使用している言語ファイルfuel/app/lang/ja/page.yml
は以下の通りです
error:
title: '内部エラーが発生しました'
suggestion: 'お手数ですが、サポートにお問い合わせ下さい'
support_page: 'お問い合わせ | ネクストエンジン'
maintenance:
title: 'メイン機能、ネクストエンジンがメンテナンス中です'
suggestion: 'お手数ですが、しばらく時間をおいてからアクセスして下さい'
congestion:
title: 'システムが混み合っています'
suggestion: 'お手数ですが、しばらく時間をおいてからアクセスして下さい'
特別なキーワードがあるわけではなく、任意のキー名を用いることができます
プロジェクトごとにキーの命名規約を設けて、ご活用下さい
更新履歴
- 2015/02/17: コントローラ - Controller_Baseクラスページ作成