Rules. Запрет на использование определенных символов в файле

Есть yii2 форма. Вот правила:

public function rules()
    {
        return [
            [['path'], 'file','skipOnEmpty' => false, 'extensions' => ['html','htm']],
            [['language'], 'string',],
        ];
    }

Необходимо добавить еще одно правило. Чтобы в загружаемом файле не было символов <? и ?> Подскажите, как это сделать?


Ответы (1 шт):

Автор решения: zabachok

Вам необходимо написать свой валидатор, для проверки содержимого файла. Здесь подробное описание о том как делать свои валидаторы. В вашем случае это будет простой метод, который прочитает содержимое файла и проверит его строковой функцией. Далее пример кода для наглядности.
В метод rules добавить валидатор:

['file', 'fileContentValidator'],

И ниже метод:

public function fileContentValidator()
{
    $content = file_get_contents($this->file->tempName);
    if (strpos($content, '<?') !== false) {
       $this->addError('file', 'Ваше сообщение об ошибке'); 
    }
}

Обратите внимание, что свойство file должно быть объектом класса yii\web\UploadedFile

→ Ссылка