私はアクションコントローラーでyiiフレームワークを使用しています。コントローラー内のすべてのアクションは同じリクエストを行いますが、マイナーな変更があります。コントローラーを使用して API (作成した拡張機能) を呼び出しています。そして、APIを呼び出すようにコントローラーを自動的に設定する方法を知りたいのですが、このコントローラーに適した特定の値と属性を使用します。したがって、すべてのコードをすべてのコントローラーにコピーして貼り付ける必要はありません。
accesssControl フィルターで同じことを行う方法を知りたいです (すべてのルールを 1 つのクラス/関数とすべてのコントローラー コンポーネントで構成します)。
例:
<?php
public function actionLoadDataUser()
{
//Set model
$model = new User_DataForm;
$function = "LoadDataUser"; //Set Method to set or get from (API)
//Set model name
$model_name = get_class($model);
// collect user input data
if(isset($_POST[$model_name]))
{
$model->attributes = $_POST[$model_name];
$response = Yii::app()-API->SendRawData($function, $model->attributes); // server and get response by function and data
switch ($response)
{
case 'OK':
Yii::app()->user->setFlash('info','OK');
$this->refresh();
break;
default:
Yii::app()->user->setFlash('info','Error!');
$this->refresh();
}
}
// display the page
$this->render('index', array('model'=>$model));
}
public function actionLoadDataAdmin()
{
//Set model
$model = new Admin_DataForm;
$function = "LoadDataAdmin"; //Set Method to set or get from (API)
//Set model name
$model_name = get_class($model);
// collect user input data
if(isset($_POST[$model_name]))
{
$model->attributes = $_POST[$model_name];
$response = Yii::app()-API->SendRawData($function, $model->attributes); // server and get response by function and data
switch ($response)
{
case 'OK':
Yii::app()->user->setFlash('info','OK');
$this->refresh();
break;
case 'NOT_ADMIN':
Yii::app()->user->setFlash('info','Access Denied');
$this->refresh();
break;
default:
Yii::app()->user->setFlash('info','Error!');
$this->refresh();
}
}
// display the page
$this->render('admin', array('model'=>$model));
}
?>