Yii2 如何为RESTAPI检查Yi2中的输入数据?
如何为RESTAPI检查Yi2中的输入数据 以下是如何在非REST API中完成的: 控制器Yii2 如何为RESTAPI检查Yi2中的输入数据?,yii2,Yii2,如何为RESTAPI检查Yi2中的输入数据 以下是如何在非REST API中完成的: 控制器 <?php namespace app\controllers; use Yii; use yii\web\Controller; use app\models\Index__GET; class SiteController extends Controller { public function actionIndex($ch_name_url = null)
<?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\Index__GET;
class SiteController extends Controller
{
public function actionIndex($ch_name_url = null)
{
$model = new Index__GET();
$model->ch_name_url = $ch_name_url;
if($model->validate()){
return $this->render('index');
}
}
}
namespace app\controllers;
use yii\rest\ActiveController;
class IndexController extends ActiveController
{
public $modelClass = 'app\models\Index__GET';
}
型号
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class Index__GET extends Model
{
public $ch_name_url;
public function rules()
{
return [
['ch_name_url', 'trim'],
['ch_name_url', 'required'],
];
}
}
<?php
namespace app\models;
use Yii;
use yii\db\ActiveRecord;
class Index__GET extends ActiveRecord
{
public $id;
public $ch_name_url;
public $email;
public static function tableName()
{
return 'user';
}
public function fields()
{
return ['id', 'ch_name_url', 'email'];
}
public function rules()
{
return [
[['id', 'ch_name_url'], 'required'],
];
}
}
只需创建一个从\yii\rest\ActiveController
扩展的控制器,然后验证
将自动运行。这样做:
namespace-app\controllers;
使用yii\rest\ActiveController;
类IndexController扩展了ActiveController
{
public$modelClass='app\models\Index\uuuu GET';
}
当您调用$model->save()
时,默认情况下会调用$model->validate()
,但如果您需要在操作中验证模型,请像在问题示例代码中那样执行
请记住,REST中的操作与普通调用略有不同,通常不需要actionIndex
有关更多信息,请按照原始文档进行操作:只需从\yii\rest\ActiveController
创建一个扩展控制器,然后验证将自动运行。这样做:
namespace-app\controllers;
使用yii\rest\ActiveController;
类IndexController扩展了ActiveController
{
public$modelClass='app\models\Index\uuuu GET';
}
当您调用$model->save()
时,默认情况下会调用$model->validate()
,但如果您需要在操作中验证模型,请像在问题示例代码中那样执行
请记住,REST中的操作与普通调用略有不同,通常不需要actionIndex
有关更多信息,请遵循原始文档:谢谢!我编辑我的问题。请读。我希望GET请求包含两个必填字段。如果我使用带参数的GET请求,则不会验证数据。@TamaraSec然后您必须更新规则和标记
查看此帖子并遵循此操作。但验证无效。我在modele['id','in','range'=>[0,5]]中添加了规则,
并发出GET请求/api/v1/user/1
我得到数据。这种验证不应该在规则中进行!规则用于验证模型是否有效。您想要的是过滤可能的结果。看看Yii2过滤器。您想要的是过滤可能的结果。-->否。我想在查询数据库之前验证数据。谢谢!我编辑我的问题。请读。我希望GET请求包含两个必填字段。如果我使用带参数的GET请求,则不会验证数据。@TamaraSec然后您必须更新规则和标记
查看此帖子并遵循此操作。但验证无效。我在modele['id','in','range'=>[0,5]]中添加了规则,
并发出GET请求/api/v1/user/1
我得到数据。这种验证不应该在规则中进行!规则用于验证模型是否有效。您想要的是过滤可能的结果。看看Yii2过滤器。您想要的是过滤可能的结果。-->否。我想在查询数据库之前验证数据。ActiveController的默认actionIndex和actionView不调用$model->validate()
,因此不使用规则。例如,在您的示例中运行的代码是,如果您选中它,您将看到它只调用checkAccess,如果为true,则返回模型。如果你想检查规则,你需要实现你自己的方法。@RaulSauco谢谢!ActiveController的默认actionIndex和actionView不调用$model->validate()
,因此不使用规则。例如,在您的示例中运行的代码是,如果您选中它,您将看到它只调用checkAccess,如果为true,则返回模型。如果你想检查规则,你需要实现你自己的方法。@RaulSauco谢谢!