Ecco come appare il mio controller RESTful.Come eseguire attività aggiuntive nel controller restful Yii2?
<?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
}
}
Funziona molto bene con il comportamento di default, ma non è molto pratico che vi sarà solo creare l'utente e di uscita. È necessario inviare e-mail con il link di verifica SMS, ecc, potrebbe essere l'aggiornamento di alcuni altri modelli basati su questa azione.
Non voglio ignorare completamente il metodo di creare funziona bene per salvare i dati e tornare indietro JSON. Voglio solo estendere la sua funzionalità aggiungendo un tipo di callback di una funzione che può accettare l'utente appena creato e inviare una e-mail alla persona.
Ho aggiunto questa funzione nel mio codice ma non viene chiamata, dovrò scrivere qualcosa per sovrascriverlo? – Viky293
@ Viky293 Questo è un metodo nella classe 'Model'. Voglio dire: 'backend \ models \ User'. È necessario sovrascriverlo nella classe 'backend \ models \ User'. –
Grazie per l'aiuto, ma non voglio inserire il codice per l'invio di e-mail nei modelli. Ho provato con la funzione afterAction(), in un modo simile a quello che hai spiegato, ma anche io non trovo una buona soluzione come dopo l'azione sarebbe chiamata dopo tutte le azioni del controller. – Viky293