Вот как выглядит мой контроллер RESTful.Как выполнить дополнительные задачи в контроллере yii2 restful?
<?php
namespace backend\controllers;
use yii\rest\Controller;
use yii;
use yii\web\Response;
use yii\helpers\ArrayHelper;
class UserController extends \yii\rest\ActiveController
{
public function behaviors()
{
return ArrayHelper::merge(parent::behaviors(), [
[
'class' => 'yii\filters\ContentNegotiator',
'only' => ['view', 'index'], // in a controller
// if in a module, use the following IDs for user actions
// 'only' => ['user/view', 'user/index']
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
'languages' => [
'en',
'de',
],
],
[
'class' => \yii\filters\Cors::className(),
'cors' => [
'Origin' => ['*'],
'Access-Control-Request-Method' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'],
'Access-Control-Request-Headers' => ['*'],
'Access-Control-Allow-Credentials' => true,
'Access-Control-Max-Age' => 86400,
],
],
]);
}
public $modelClass = 'backend\models\User';
public function actions()
{
}
public function sendMail(){
\t //Need to call this function on every create
\t //This should also have the information about the newly created user
}
}
Он работает очень хорошо с поведением по умолчанию, но это не очень практично, что вы просто создать пользователя и выход. Вам необходимо отправить электронное письмо с подтверждением ссылки SMS и т. Д., Возможно, будут обновлены некоторые другие модели, основанные на этом действии.
Я не хочу полностью переопределять метод создания, так как он хорошо работает для сохранения данных и возврата назад JSON. Я просто хочу расширить функциональность, добавив функцию обратного вызова функции, которая может принять вновь созданного пользователя и отправить электронное письмо человеку.
Я добавил эту функцию в свой код, но она не будет вызвана, нужно ли мне что-то написать, чтобы ее переопределить? – Viky293
@ Viky293 Это метод в вашем классе 'Model'. Я имею в виду: 'backend \ models \ User'. Вы должны переопределить его в классе 'backend \ models \ User'. –
Спасибо за помощь, но я не хочу помещать код для отправки электронной почты внутри моделей. Я попытался с функцией afterAction(), так же, как вы объяснили, но я также не нашел хорошего решения, поскольку afterAction будет вызываться после всех действий контроллера. – Viky293