خب این کاملا طبیعیه چون این تابع برای کاری نیست که شما قصد انجامش رو دارید!
اگر می خواید کاری انجام بدید که قبل از اجرای کنترلر ها اتفاق بیفته بهتره یک کلاس اختیاری بسازید و اون رو از کلاس Controller بیاید و extend کنید. حالا تمام کلاس های کنترل دیگه رو از کلاس خودتون extend کنید.
توی کلاسی که خودتون گذاشتید و در تابع init می توانید هر کاری خواستید انجام بدید
حالا یه سوال دیگه، این توضیحی که مربوط به همون لینک هست رو بخونید: Sometimes, you may want to put your Web application in maintenance mode temporarily and display the same informational page for all requests..
اگه بخواییم ببریم روی maintenance mode باید hard code بزنیم؟
EVENT_BEFORE_ACTION
This event is triggered before running every controller action. The actual event name is beforeAction
http://www.yiiframework.com/doc-2.0/yii-...ION-detail
'on beforeAction' => function ($event) {
if (some condition) {
$event->isValid = false;
} else {
}
},
Creating Filters
http://www.yiiframework.com/doc-2.0/guid...ng-filters
namespace appcomponents;
use Yii;
use yiibaseActionFilter;
class ActionTimeFilter extends ActionFilter
{
private $_startTime;
public function beforeAction($action)
{
$this->_startTime = microtime(true);
return parent::beforeAction($action);
}
public function afterAction($action, $result)
{
$time = microtime(true) - $this->_startTime;
Yii::trace("Action '{$action->uniqueId}' spent $time second.");
return parent::afterAction($action, $result);
}
}
Application Lifecycle
http://www.yiiframework.com/doc-2.0/yii-...ION-detail
(27-08-1394، 11:03 ق.ظ)desatir7316 نوشته: [ -> ]حالا یه سوال دیگه، این توضیحی که مربوط به همون لینک هست رو بخونید: Sometimes, you may want to put your Web application in maintenance mode temporarily and display the same informational page for all requests..
اگه بخواییم ببریم روی maintenance mode باید hard code بزنیم؟
میتونید توی همون init یا beforeAction چک کنید اگه شرایط برقرار نبود، ریدایرکت کنید به اکشنی که برای maintenance mode درنظر گرفتین.