コントローラ - Controller_Neapiクラス
ここでは、ネクストエンジンAPIを使用するコントローラの基底クラスである、Base\Controller_Neapi
について説明いたします
beforeメソッド
beforeメソッドの処理は以下の通りです
- ネクストエンジンAPIクライアントのインスタンスを格納
- ネクストエンジンAPIクライアントのインスタンスにログイン済みのユーザ情報をセット
2でセッションに格納されたユーザ情報ではなく、DBの内容を取得しているのは、
セッションに保存されたアクセストークンが途中で使用期限切れになり、DBの値が更新される恐れがあるためです
そのため、常にDBから最新のアクセストークンを取得しています
つまり、画面遷移をするたびにSELECTが実行されます
しかし、最新のアクセストークンを常に取得する必要が有るため、このような処理にしております
abstract class Controller_Neapi extends Controller_Base {
/**
* ネクストエンジンAPIクライアントのインスタンスを格納する
* @var \Nextengine\Api\Client
*/
protected static $client;
/**
* APIを使用する画面で共通処理として必要な処理、クライアントの初期化を行う。
*
* @return void
*/
public function before()
{
parent::before();
if(is_null($this->user)) {
\Response::redirect('/auth/login');
}
self::$client = new \Nextengine\Api\Client_Router();
self::$client->setUser($this->user);
}
}
Controller_Neapiクラスを継承したクラスのデモ
fuel/modules/demo/classes/controller/api.php
に、
Controller_Neapiクラスを継承したクラスのデモとして、Controller_Api
クラスを定義しています
ネクストエンジンアプリ基盤を動かすページのAPIを試すで使用したクラスです
このクラスのコードを説明いたします
namespace Demo;
class Controller_Api extends \Controller_Neapi {
public function action_find()
{
$data = array(
'products' => self::$client->apiExecute('/api_v1_master_goods/search', array(
'fields' => 'goods_id,goods_name,stock_quantity,supplier_name',
'limit' => 5
)),
'divisions' => array(
'order' => self::$client->apiExecute('/api_v1_system_order/info'),
'credit' => self::$client->apiExecute('/api_v1_system_credittype/info'),
)
);
$this->template->title = 'Demo » Api » find';
$this->template->content = \View::forge('api/find', $data);
}
}
Controller_Neapiクラスを継承しているため、親クラスのbefore()
でインスタンスが初期化され、self::$client
でネクストエンジンAPIクライアントのインスタンスにアクセスできます
ネクストエンジンAPIを使用するには、apiExecute
メソッドを実行します
apiExecuteメソッドの説明は、SDKのドキュメントを御覧下さい
使用できるAPI一覧は、APIのドキュメントを御覧下さい
Controller_Neapiを継承する際に気をつけること
ネクストエンジンAPIを使用しないアクションを混在させない
Controller_Neapiを継承すると、アクセスのたびにセッションを見に行き、
セッションにユーザ情報が保存されていなければ認証処理へリダイレクトしてしまいます
そのため、ネクストエンジンへのログインが不要なアクションを、コントローラ内に混在させないで下さい
設計レベルで、ネクストエンジンAPIを使用する必要が有る・無いを分けてコントローラを実装して下さい
更新履歴
- 2015/02/17: コントローラ - Controller_Neapiクラスページ作成