Đây là cách trình điều khiển RESTful của tôi trông như thế nào.Làm cách nào để thực hiện các tác vụ bổ sung trong bộ điều khiển yên tĩnh 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
}
}
Nó hoạt động rất tốt với hành vi mặc định nhưng nó không phải là rất thực tế rằng bạn sẽ chỉ tạo người dùng và thoát. Bạn cần phải gửi email với liên kết xác minh SMS vv, có thể được cập nhật một số mô hình khác dựa trên hành động này.
Tôi không muốn ghi đè hoàn toàn phương thức tạo vì nó hoạt động tốt để lưu dữ liệu và trả về JSON. Tôi chỉ muốn mở rộng chức năng của nó bằng cách thêm một loại gọi lại của một hàm có thể chấp nhận người dùng mới được tạo và gửi email cho người đó.
Tôi đã thêm chức năng này vào mã của mình nhưng nó không được gọi, tôi có phải viết gì đó để ghi đè lên nó không? – Viky293
@ Viky293 Đây là phương thức trong lớp 'Mô hình' của bạn. Ý tôi là: 'backend \ models \ User'. Bạn phải ghi đè lên nó trong lớp 'backend \ models \ User'. –
Cảm ơn bạn đã trợ giúp, nhưng tôi không muốn đặt mã để gửi email bên trong các mô hình. Tôi đã thử với hàm afterAction(), theo cách tương tự như bạn đã giải thích, nhưng điều đó cũng không tìm thấy một giải pháp tốt vì hành động afterAction sẽ được gọi sau tất cả các hành động của bộ điều khiển. – Viky293