سلام، متد آپدیت:
public function update(UpdateVideoRequest $request, Video $video)
{
if($request->hasFile('file'))
{
$path = Storage::putFile('/public', $request->file('file'));
$request->merge([
'url' => $path,
]);
}
$video->update($request->all());
return redirect()->route('videos.show', $video->slug)->with('alert', __('messages.video_edit_success'));
}
کلس ولیدیشن آپدیت ویدئو ریکوئست:
class UpdateVideoRequest extends StoreVideoRequest
{
public function rules(): array
{
return array_merge(parent::rules(), [
'slug' => ['required', Rule::unique('videos')->ignore($this->video), 'alpha_dash'],
'file' => ['file', 'mimetypes:video/mp4', 'nullable', 'max:20000'],
]);
}
}
کلس پرنت:
class StoreVideoRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'name' => ['required'],
'length' => ['required', 'integer'],
'slug' => ['required', 'unique:videos,slug', 'alpha_dash'],
'url' => ['required'],
'thumbnail' => ['required', 'url'],
'category_id' => ['required', 'exists:categories,id'],
'file' => ['required', 'mimetypes:video/mp4', 'max:20000'],
];
}
protected function prepareForValidation(): void
{
$this->merge([
'slug' => Str::slug($this->slug),
// 'file' => $this->url,
]);
}
public function messages()
{
return ['file.*' => 'فایل شما باید با تایپ mp4 و کمتر از 20 مگابایت باشد'];
}
}
تیکه کدِ مربوط به اینپوتِ فایل
<div class="col-md-6">
<label>@lang('videos.url')</label>
<input type="file" name="file" class="form-control">
</div>
به اسم فایل گیر میده و هرچی که میخوام ذخیره کنم، ارور میده که فیلد آدرس ویدئو نمیتواند خالی باشد.
تلاش کردم که عکس قرار بدم ولی سایت ارور میده نمیشه عکس گذاشت...
چون نشد عکس بزارم، پروژه رو قرار میدم اینجا.
تشکر