我创建了一个名为" EndTimeValidator"的自定义验证器类。在common \ components namespace中。
代码:
namespace common\components;
use yii\validators\Validator;
class EndTimeValidator extends Validator
{
public function init()
{
parent::init();
$this->message = 'Event EndTime must be greater than StartTime.';
}
public function validateAttribute($model, $attribute)
{
$startDate = $model->StartDate;
$endDate = $model->EndDate;
$startTime = $model->StartTime;
$endTime = $model->EndTime;
if( ($startDate == $endDate) && $startTime != "" && $endTime != "" )
{
if( strtotime($endTime) < strtotime($startTime) )
{
$this->addError($attribute, $this->message);
}
}
}
public function clientValidateAttribute($model, $attribute, $view)
{
$startDate = $model->StartDate;
$endDate = $model->EndDate;
$startTime = $model->StartTime;
$endTime = $model->EndTime;
if( ($startDate == $endDate) && $startTime != "" && $endTime != "" )
{
if( strtotime($endTime) < strtotime($startTime) )
{
return <<<JS
messages.push($this->message);
JS;
}
}
}
}
在模型中,我首先将该路径包含在内,并将验证定义如下:
use common\components\EndTimeValidator;
['EndTime', EndTimeValidator::class],
问题已更新:
但它给了我以下例外:
在非对象
上调用成员函数getAttributeLabel()
我已经提到了link。我做错了吗?请指导我。谢谢!
答案 0 :(得分:1)
使用:
View view = container.getChildAt(i);
TableLayout table=(TableLayout)view.findViewbyId(R.id.table);
TableRow row=(TableRow)table.getChildAt(0);
spinner = (Spinner) row.getChildAt(2);
答案 1 :(得分:0)
这是一个愚蠢的错误。但我会保留这个问题,因为它可能对某人有帮助。
错误是由 validateAttribute 函数
中的以下行引起的$this->addError($attribute, $this->message);
将以上行替换为:
$model->addError($attribute, $this->message);