Сначала необходимо создать приложение Yii (используя путь к файлу конфигурации), чтобы получить доступ к его моделям и контроллерам, как указано в документации . Затем вы можете получить доступ к любому классу модели во внешнем приложении так же, как и к нему в приложении Yii, и можете использовать действия контроллера, как показано ниже:
$controller = new \YOURController('ACTION_NAME');
$controller->ACTION_NAME();
Если вы уже импортировали модели / контроллеры в свой Конфигурационный файл, тогда вам не нужно будет импортировать какой-либо класс, но если у вас его нет, вы можете импортировать конкретную c модель / контроллер, как показано ниже;
\Yii::import('application.models.MODEL_NAME');
\Yii::import('application.controllers.CONTROLLER_NAME');
Проверьте примеры ниже;
namespace main\Helpers;
require_once('path/to/yii.php');
\Yii::createWebApplication('path/to/config.php');
Class HelperClass {
public static function yiisupport($id){
// Access Yii variables
\Yii::app()->name;
// Access yii model
$model = \YiiModel::model()->findByPK($id);
// Access yii controller and its actions
$controller = new \YiiController('actionCreate');
$controller->actionCreate();
}
}
Обновление:
Как упомянуто @ rob006 в комментарии ниже, что вызывать действие контроллера yii вне приложения Yii - плохая идея, однако, если вы все еще хотите это сделать, есть более безопасный способ, который следует жизненному циклу приложения Yii и при этом будут задействованы фильтры доступа и beforeAction()
. Таким образом, вы можете вызывать действия контроллера более безопасным способом, как показано ниже:
\Yii::app()->runController('route/to/action');