PHP yii2 rules验证 URL是否可以访问
在模型rules 方法里面 添加
public function rules()
{
return [
[['id', 'status', 'created_at', 'updated_at'], 'integer'],
[['src'], 'string'],
['src', 'unique' , 'targetClass' => '\common\models\ncs\Baidu', 'message' => '此推广链接存在 !!!'], //判断存在
['src', 'IsGet'], //定义验证方法
];
}
IsGet 方法内容 get_headers
函数 要开启 fileinfo
扩展 和OpenSSL
public function IsGet($attribute){
$temp = get_headers($this->src,true);
if(!preg_match('/200/',$temp[0])){
$this->addError($attribute,'该链接无效, 无法访问');
}else{
return true;
}
}
在控制器中加入 验证
if (Yii::$app->request->isAjax && !Yii::$app->request->isPjax) {
if ($model->load(Yii::$app->request->post())) {
Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
Yii::$app->response->data = \yii\widgets\ActiveForm::validate($model);
Yii::$app->end();
}
}
视图form 开启ajax 验证
$form = ActiveForm::begin([
'id' => $model->formName(),
'enableAjaxValidation' => true, //开启验证
'validationUrl' => Url::to(['ajax-edit', 'id' => $model['id']]),
'fieldConfig' => [
// 'template' => "<div class='col-sm-2 text-right'>{label}</div><div class='col-sm-10'>{input}\n{hint}\n{error}</div>",
]
]);