【发布时间】:2021-02-27 10:44:14
【问题描述】:
我在 Laravel 中制作项目。我将此代码用于验证文件大小和格式:
class KnowledgeBaseMovieRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
$id = $this->route('knowledge_base_movie');
$rules = [
'name' => ['required', 'max:255'],
];
if (empty($id)) {
$rules['movie'] = ['file', 'required', 'max:200000'];
$rules['movie'] = ['file', 'max:20000', new Mp4File];
}
return $rules;
}
}
class Mp4File implements Rule {
const MIMES = [
'video/mp4'
];
const EXT = 'mp4';
public function passes($attribute, $file) {
return in_array($file->getClientMimeType(), self::MIMES) && $file->getClientOriginalExtension() === self::EXT;
}
public function message() {
return ':attribute musi być plikiem .mp4.';
}
}
我需要最大大小为 200000 且格式为 mp4 的文件。
在 tjis 行:
$rules['movie'] = ['file', 'required', 'max:200000'];
$rules['movie'] = ['file', 'max:20000', new Mp4File];
我有“$rules['movie'] 立即被覆盖”
我该如何解决?
【问题讨论】:
-
为什么要覆盖下一行定义的变量?
-
如何将这 2 个条件写在 1 行中?;)