gpt4 book ai didi

php - 如何在 Yii2 restful controller 中执行额外的任务?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:35:01 25 4
gpt4 key购买 nike

这是我的 RESTful Controller 的样子。

<?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(){
//Need to call this function on every create
//This should also have the information about the newly created user
}

}

它在默认行为下工作得很好,但如果您只创建用户并退出则不太实用。您需要发送带有验证链接短信等的电子邮件,可能会根据此操作更新一些其他模型。

我不想完全覆盖创建方法,因为它可以很好地保存数据并返回 JSON。我只想通过添加一种回调函数来扩展其功能,该函数可以接受新创建的用户并向该人发送电子邮件。

最佳答案

看这里:https://github.com/githubjeka/yii2-rest/blob/bf034d26f90faa3023e5831d1eb165854c5c7aaf/rest/versions/v1/controllers/PostController.php

如您所见,这是使用 prepareDataProvider 来更改索引操作使用的正常方式。这非常方便。您可以在此处找到 prepareDataProvider 的定义:http://www.yiiframework.com/doc-2.0/yii-rest-indexaction.html#prepareDataProvider()-detail

现在您可以看到,还有 2 个额外的方法 afterRun() 和 beforeRun() 也可用于创建操作。 http://www.yiiframework.com/doc-2.0/yii-rest-createaction.html

您可以使用这 2 个函数并将它们声明为类似于 prepareDataProvider 来执行更多操作,例如发送电子邮件。我自己没有尝试过,但我相信这应该是可行的方法。

关于php - 如何在 Yii2 restful controller 中执行额外的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33197424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com