用户名和电子邮件检查REST API

时间:2017-08-26 10:30:06

标签: php rest yii yii2

我是php开发的新手。我创建了一个REST API,其中创建了employees并生成了员工列表。用于检查API的工具是postman

现在我要做的是,当输入用户名和电子邮件时,它会检查两者是否已经使用了用户名和电子邮件,那么它将不会创建而不会产生错误消息。

作为php的新手,我无法找到完美的例子。以下是代码

员工模型

class Employee extends \yii\db\ActiveRecord
{
const SCENARIO_CREATE = 'create';
/**
 * @inheritdoc
 */
public static function tableName()
{
    return 'employee';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['emp_name', 'emp_email', 'emp_sal'], 'required'],
        [['emp_name', 'emp_email', 'emp_sal'], 'string', 'max' => 100],
    ];
}


public function scenarios()
{
    $scenarios = parent::scenarios();
    $scenarios['create'] = ['emp_name','emp_email', 'emp_sal'];
    return $scenarios;

}

/**
 * @inheritdoc
 */
public function attributeLabels()
{
    return [
        'id' => 'ID',
        'emp_name' => 'Emp Name',
        'emp_email' => 'Emp Email',
        'emp_sal' => 'Emp Sal',
    ];
}

员工控制器

 public function actionCreateEmployee()
{


   \Yii::$app->response->format= \yii\web\Response::FORMAT_JSON;


    $employee = new Employee();
    $employee-> scenario = Employee::SCENARIO_CREATE;

    $employee->attributes = \Yii::$app->request->post();

    if ($employee->validate())
    {
        $employee->save();
        return array('status'=> true, 'data' => 'Employee Created Sussessfully');
    }
    else
    {
        return array('status'=> false, 'data'=>$employee->getErrors());
    }
    //return array('status'=> true);
}

public function actionListEmployee()
{
    \Yii::$app->response->format= \yii\web\Response::FORMAT_JSON;

    $employee = Employee::find()->all();

    if(count($employee)>0)
    {
        return array('status' => true,'data'=> $employee);
    }
    else{
        return array('status'=>false, 'data'=> 'No Employee Record Found');
    }

}

ID自动递增。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

Yii2对唯一性进行了验证。要实现此功能,您必须在规则数组中为要检查唯一性的字段添加此项。在您的情况下,这将如下:

public function rules()
{
    return [
        [['emp_name', 'emp_email', 'emp_sal'], 'required'],
        [['emp_name', 'emp_email', 'emp_sal'], 'string', 'max' => 100],
        [['emp_email'],'unique','message'=>'Employee email has already been taken. Use another email.'],
        [['emp_name'],'unique','message'=>'User name has already been taken.']
    ];
}

如果您想了解有关Yii2 http://www.yiiframework.com/doc-2.0/yii-validators-uniquevalidator.html

的唯一验证器的更多信息,可以查看此链接