コントローラ Controller_Baseクラス

コントローラ - Controller_Baseクラス

ここでは、コントローラの基底クラスであるBase\Controller_Baseについて説明いたします

また、多言語対応のアプリのために、多言語化についても説明いたします

Controller_Baseが記述されているファイル

Controller_Baseクラスは、

fuel/packages/base/classes/controller/base.php

に定義されています

このクラスでは、beforeメソッドと_initメソッド、

_initメソッドで使用しているユーティリティを定義しています


beforeメソッド

beforeメソッドでしていることは以下の通りです

  1. ユーザがアプリにログイン済みなら、DBからそのユーザ情報と企業情報を取得する

ログインをしていればこのプロパティに自動でセットします

このクラスを継承したコントローラであれば$this->company$this->userからアクセスできます

company, userプロパティのデフォルト値はnullです

プロパティの値がnullだったらユーザがログインしていないと判定することができます


_initメソッド

_initメソッドでしていることは以下の通りです

  1. ユーザの設定言語を取得し
  2. その言語にそった言語ファイルのロードをする

多言語対応については次章で説明します

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クラスページ作成