我的项目中有这个课程:
<?php
namespace app\models;
use Yii;
use yii\base\Model;
class Contact extends Model
{
public $fullname;
public $info;
public function rules()
{
return [
['fullname','info'],'required'
];
}
}
我想在我的联系人&#39;上进行自定义验证。领域。如果字段上的值不是数字,我想将其验证为邮件。
是否有使用条件验证器的方法? 提前感谢所有帮助
答案 0 :(得分:2)
你可以做各种事情来完成这个自定义验证器,在beforeValidate()中使用输入等。就个人而言,最好的方法是设置方案。在您的控制器中,在验证模型之前检查用户输入是否为数字(is_numeric()),如果将场景设置为&#39; something1&#39;如果没有,则将场景设置为“邮件”。这样您就不必担心验证,因为您将为具有不同方案的同一属性设置两个规则。一个规则是电子邮件,其他可以是integerOnly或类似的东西。希望它有所帮助。
答案 1 :(得分:1)
您可以定义内联函数来验证规则中的字段。在你的情况下,我想你可能会做类似的事情:
<div class="container">
<div class="form-group">
<label for="firstNameInput">Firstname:</label>
<input type="text" class="form-control" id="firstNameInput" name="firstNameInput">
<label for="lastNameInput">Lastname:</label>
<input type="text" class="form-control" id="lastNameInput" name="lastNameInput">
</div>
<button class="btn btn-info" onclick="showName()">Submit</button>
<p id="demo"></p>
</div>
<script type="text/javascript">
var person = {
firstNameElement: document.getElementById('firstNameInput'),
lastNameElement: document.getElementById('lastNameInput'),
fullName: function () {
return this.firstNameElement.value + ", " + this.lastNameElement.value;
}
};
function showName() {
document.getElementById('demo').innerHTML = person.fullName();
};
</script>
更多信息:
1)http://www.yiiframework.com/doc-2.0/guide-input-validation.html
2)http://www.yiiframework.com/doc-2.0/guide-input-validation.html#using-client-side-validation