* @copyright (c), Thread */ class FormController extends BaseController { public $defaultAction = 'index'; /** * @return array */ public function behaviors() { return [ 'verbs' => [ 'class' => VerbFilter::class, 'actions' => [ 'send' => ['post'], ], ], ]; } /** * */ public function actionIndex() { } /** * */ public function actionSend() { $model = new Question([ 'scenario' => 'add_syq' ]); if ($model->load(Yii::$app->getRequest()->post())) { $transaction = $model::getDb()->beginTransaction(); try { $save = $model->save(); ($save) ? $transaction->commit() : $transaction->rollBack(); if ($save) { $this->send($model); Yii::$app->getSession()->addFlash('faq-form-send', 'alert-success'); } } catch (Exception $e) { Yii::getLogger()->log($e->getMessage(), Logger::LEVEL_ERROR); $transaction->rollBack(); } } return $this->redirect(['faq/index']); } /** * @param Question $question * @return mixed */ protected function send(Question $question) { /** * @var $carrier \thread\modules\sys\modules\mailcarrier\components\MailCarrier * @var $queue \yii\queue\file\Queue */ $carrier = Yii::$app->get('mail-carrier'); $carrier->setCarrier('faq')->initCarrier('faq'); // $queue = Yii::$app->get('queue-mailer'); return $queue->push(new sendFromBase([ 'letter_id' => $carrier->saveLetterToBase([ 'question' => $question, ], 'faq/index') ])); } }