本文整理汇总了PHP中yii\base\Application::on方法的典型用法代码示例。如果您正苦于以下问题:PHP Application::on方法的具体用法?PHP Application::on怎么用?PHP Application::on使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类yii\base\Application
的用法示例。
在下文中一共展示了Application::on方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: bootstrap
/**
* Bootstrap method to be called during application bootstrap stage.
*
* @param Application $app the application currently running
*/
public function bootstrap($app)
{
if ($app instanceof yii\web\Application) {
$app->on(Application::EVENT_BEFORE_REQUEST, function () use($app) {
$app->request->attachBehavior('monsterRequest', 'DotPlant\\Monster\\behaviors\\MonsterRequest');
});
$app->on(Application::EVENT_BEFORE_ACTION, function () use($app) {
/** @var Repository $repository */
$repository = $app->get('monsterRepository');
$repository->autoloadAssets();
});
}
}
示例2: attachEvents
/**
* Attaches global and class-level event handlers from sub-modules
*
* @param \yii\base\Application $app the application currently running
*/
public function attachEvents($app)
{
foreach ($this->getModules() as $moduleID => $config) {
$module = $this->getModule($moduleID);
if ($module instanceof EventManagerInterface) {
/** @var EventManagerInterface $module */
foreach ($module->attachGlobalEvents() as $eventName => $handler) {
$app->on($eventName, $handler);
}
foreach ($module->attachClassEvents() as $className => $events) {
foreach ($events as $eventName => $handlers) {
foreach ($handlers as $handler) {
if (is_array($handler) && is_callable($handler[0])) {
$data = isset($handler[1]) ? array_pop($handler) : null;
$append = isset($handler[2]) ? array_pop($handler) : null;
Event::on($className, $eventName, $handler[0], $data, $append);
} elseif (is_callable($handler)) {
Event::on($className, $eventName, $handler);
}
}
}
}
}
}
}
示例3: bootstrap
/**
* Bootstrap method to be called during application bootstrap stage.
*
* @param Application $app the application currently running
*/
public function bootstrap($app)
{
$app->i18n->translations['extensions-manager'] = ['class' => 'yii\\i18n\\PhpMessageSource', 'basePath' => __DIR__ . DIRECTORY_SEPARATOR . 'messages'];
DeferredQueueEvent::on(DeferredController::className(), DeferredController::EVENT_DEFERRED_QUEUE_COMPLETE, [DeferredQueueCompleteHandler::className(), 'handleEvent']);
if ($app instanceof \yii\console\Application) {
$app->controllerMap['extension'] = ExtensionController::className();
$app->on(Application::EVENT_BEFORE_ACTION, function () {
$module = ExtensionsManager::module();
if ($module->autoDiscoverMigrations === true) {
if (isset(Yii::$app->params['yii.migrations']) === false) {
Yii::$app->params['yii.migrations'] = [];
}
/** @var array $extensions */
$extensions = $module->getExtensions();
foreach ($extensions as $name => $ext) {
if ($ext['composer_type'] === Extension::TYPE_DOTPLANT && $module->discoverDotPlantMigrations === false) {
continue;
}
$extData = ComposerInstalledSet::get()->getInstalled($ext['composer_name']);
$packageMigrations = ExtensionDataHelper::getInstalledExtraData($extData, 'migrationPath', true);
$packagePath = '@vendor/' . $ext['composer_name'];
foreach ($packageMigrations as $migrationPath) {
Yii::$app->params['yii.migrations'][] = "{$packagePath}/{$migrationPath}";
}
}
}
});
}
}
示例4: bootstrap
/**
* Bootstrap method to be called during application bootstrap stage.
* @param Application $app the application currently running
*/
public function bootstrap($app)
{
if ((isset($_GET['_xhprof']) || isset($_COOKIE['_xhprof'])) && function_exists('xhprof_enable')) {
$app->on(Application::EVENT_BEFORE_REQUEST, function () use($app) {
\xhprof_enable(\XHPROF_FLAGS_CPU + \XHPROF_FLAGS_MEMORY);
});
}
}
示例5: bootstrap
/**
* Bootstrap method to be called during application bootstrap stage.
* @param Application $app the application currently running
*/
public function bootstrap($app)
{
$app->on(Application::EVENT_BEFORE_REQUEST, function () use($app) {
try {
/*******************************
/* Mailer
/*******************************/
// Set default transport class
$transport = ['class' => 'Swift_MailTransport'];
// Change transport class to SMTP if was selected
if (isset($app->params['App.Mailer.transport']) && $app->params['App.Mailer.transport'] === 'smtp') {
$transport = ['class' => 'Swift_SmtpTransport', 'host' => $app->settings->get("smtp.host"), 'username' => $app->settings->get("smtp.username"), 'password' => base64_decode($app->settings->get("smtp.password")), 'port' => $app->settings->get("smtp.port"), 'encryption' => $app->settings->get("smtp.encryption") == 'none' ? null : $app->settings->get("smtp.encryption")];
}
// Set mail queue component as mailer
$app->set('mailer', ['class' => 'app\\components\\queue\\MailQueue', 'mailsPerRound' => 10, 'maxAttempts' => 3, 'transport' => $transport, 'messageConfig' => ['charset' => 'UTF-8']]);
/*******************************
/* User session
/*******************************/
if (isset($app->user) && !$app->user->isGuest) {
/** @var \app\models\Profile $profile */
$profile = $app->user->identity->profile;
// Setting the timezone to the current users timezone
if (isset($profile->timezone)) {
$app->setTimeZone($profile->timezone);
}
// Setting the language to the current users language
if (isset($profile->language)) {
$app->language = $profile->language;
}
}
} catch (\Exception $e) {
// Do nothing
}
});
/*******************************
/* Event Handlers
/*******************************/
$app->on('app.form.submission.received', ['app\\events\\handlers\\SubmissionEventHandler', 'onSubmissionReceived']);
$app->on('app.form.submission.accepted', ['app\\events\\handlers\\SubmissionEventHandler', 'onSubmissionAccepted']);
$app->on('app.form.submission.rejected', ['app\\events\\handlers\\SubmissionEventHandler', 'onSubmissionRejected']);
}
示例6: bootstrap
/**
* Bootstrap method to be called during application bootstrap stage.
* @param Application $app the application currently running
*/
public function bootstrap($app)
{
if (!$app instanceof \yii\web\Application) {
return;
}
if (!$app->has('backend')) {
$app->set('backend', static::className());
}
if ($app->get('backend') instanceof Component) {
$app->on(\yii\web\Application::EVENT_BEFORE_ACTION, [self::className(), 'detectBackend']);
}
}
示例7: bootstrap
/**
* Bootstrap method to be called during application bootstrap stage.
* @param Application $app the application currently running
*/
public function bootstrap($app)
{
mb_internal_encoding($this->internalEncoding);
if ($app instanceof \yii\web\Application === true) {
$app->on(Application::EVENT_BEFORE_ACTION, function () use($app) {
$controller = Yii::$app->requestedAction->controller;
$decorators = ContentDecorator::getAllDecorators();
foreach ($decorators as $decorator) {
$decorator->subscribe($app, $controller);
}
});
}
}
示例8: bootstrap
/**
* Bootstrap method to be called during application bootstrap stage.
* @param Application $app the application currently running
*/
public function bootstrap($app)
{
$app->on(Application::EVENT_BEFORE_REQUEST, function () {
$this->retrieveInfo();
$this->retrieveLanguageFromGeo();
});
$app->on(Application::EVENT_BEFORE_ACTION, function () {
$this->retrieveCookieLanguage();
});
$this->registerTranslations();
}