Обзор кода для сохранения и обновления нескольких файлов Laravel ⇐ Php
Обзор кода для сохранения и обновления нескольких файлов Laravel
Могу ли я попросить вас проверить мой код? Кажется, все работает, но я не уверен, что это лучший способ сохранить и обновить несколько файлов. Это способ, который я понял, но у меня не очень много опыта, поэтому я боюсь, что могут возникнуть какие-то проблемы с безопасностью или более эффективный способ их решения. Я прошу всего лишь обзор кода и обратную связь.
Контроллер выглядит так:
класс DiaryController расширяет контроллер { индекс публичной функции() { $users = User::has('дневники')->get(); return view('дневник', компакт('пользователи')); } публичная функция show($id) { $user = Пользователь::findOrFail($id); return view('diaryshow', Compact('пользователь')); } публичная функция create() { $users = Пользователь::all(); $lessons = Урок::all(); return view('diarycreate', компакт('пользователи', 'уроки')); } хранилище общедоступных функций (запрос $request) { $attributes = $request->validate([ 'описание' => 'обязательно|мин:2', 'user_id' => 'обязательно', 'тема' => 'обязательно|мин:2|макс:255', 'lesson_id' => 'обнуляемый', 'files.*' => 'nullable|mimes:jpg,bmp,png,pdf|file|max:60000' ]); $diary = новый дневник; $diary->description = $attributes['description']; $diary->user_id = $attributes['user_id']; $diary->topic = $attributes['topic']; $diary->lesson_id = $attributes['lesson_id']; $filePaths = []; if ($request->hasFile('files')) { foreach ($request->file('files') as $file) { $path = $file->store('файлы'); $filePaths[] = $путь; } } $diary->file_paths = json_encode($filePaths); $дневник->сохранить(); return redirect('/diary')->with('успех', 'Все сохранено'); } публичная функция edit(Дневник $diary) { $users = Пользователь::all(); $lessons = Урок::all(); return view('diaryedit', Compact('дневник', 'пользователи', 'уроки')); } обновление публичной функции (Дневник $diary) { $attributes = request()->validate([ 'описание' => 'обязательно|мин:2', 'user_id' => 'обязательно', 'тема' => 'обязательно|мин:2|макс:255', 'lesson_id' => 'обнуляемый', 'save_files.*' => 'nullable|regex:/^[a-zA-Z0-9.\/]+$/|max:255', 'files.*' => 'nullable|mimes:jpg,bmp,png,pdf|file|max:60000' ]); $diary->description = $attributes['description']; $diary->user_id = $attributes['user_id']; $diary->topic = $attributes['topic']; $diary->lesson_id = $attributes['lesson_id']; //dd("1 программа"); $filePaths=[]; if(request()->hasFile('files')) { foreach (request()->file('files') as $file) { $path = $file->store('файлы'); $filePaths[] = $путь; } } if(request()->input('save_files')){ foreach (request()->input('save_files') as $path){ $filePaths[] = $путь; } } unset($attributes['save_files']); unset($attributes['files']); $attributes['file_paths'] = json_encode($filePaths); $дневник->обновление($атрибуты); return redirect()->route('дневник')->with('успех', 'Позиция изменена'); } Моя блейд-форма обновления файлов выглядит так (форма сохранения файлов аналогична):
@csrf @method('ИСПРАВЛЕНИЕ') {{old('description', $diary->description)}} @foreach($users как $user) user->id === $user->id ? 'выбрано' : ''}}> {{$user->имя}} @endforeach @foreach($уроки как $уроки) id === $diary->lesson_id ? 'выбрано': ''}} >{{$lesson->название_урока}} @endforeach @if($diary->пути_файлов) Определить возможность использования @foreach(json_decode($diary->file_paths) как $index => $filePath) {{basename($filePath)}} @endforeach @foreach($errors->get('save_files.*') как $error) @endforeach @endif {{ __('Обновлять') }} Спасибо за помощь!
Было бы здорово, если бы кто-нибудь просто проверил мой код и дал мне отзыв, все ли с ним в порядке. Это работает, но я не считаю, что это лучшее решение.
Могу ли я попросить вас проверить мой код? Кажется, все работает, но я не уверен, что это лучший способ сохранить и обновить несколько файлов. Это способ, который я понял, но у меня не очень много опыта, поэтому я боюсь, что могут возникнуть какие-то проблемы с безопасностью или более эффективный способ их решения. Я прошу всего лишь обзор кода и обратную связь.
Контроллер выглядит так:
класс DiaryController расширяет контроллер { индекс публичной функции() { $users = User::has('дневники')->get(); return view('дневник', компакт('пользователи')); } публичная функция show($id) { $user = Пользователь::findOrFail($id); return view('diaryshow', Compact('пользователь')); } публичная функция create() { $users = Пользователь::all(); $lessons = Урок::all(); return view('diarycreate', компакт('пользователи', 'уроки')); } хранилище общедоступных функций (запрос $request) { $attributes = $request->validate([ 'описание' => 'обязательно|мин:2', 'user_id' => 'обязательно', 'тема' => 'обязательно|мин:2|макс:255', 'lesson_id' => 'обнуляемый', 'files.*' => 'nullable|mimes:jpg,bmp,png,pdf|file|max:60000' ]); $diary = новый дневник; $diary->description = $attributes['description']; $diary->user_id = $attributes['user_id']; $diary->topic = $attributes['topic']; $diary->lesson_id = $attributes['lesson_id']; $filePaths = []; if ($request->hasFile('files')) { foreach ($request->file('files') as $file) { $path = $file->store('файлы'); $filePaths[] = $путь; } } $diary->file_paths = json_encode($filePaths); $дневник->сохранить(); return redirect('/diary')->with('успех', 'Все сохранено'); } публичная функция edit(Дневник $diary) { $users = Пользователь::all(); $lessons = Урок::all(); return view('diaryedit', Compact('дневник', 'пользователи', 'уроки')); } обновление публичной функции (Дневник $diary) { $attributes = request()->validate([ 'описание' => 'обязательно|мин:2', 'user_id' => 'обязательно', 'тема' => 'обязательно|мин:2|макс:255', 'lesson_id' => 'обнуляемый', 'save_files.*' => 'nullable|regex:/^[a-zA-Z0-9.\/]+$/|max:255', 'files.*' => 'nullable|mimes:jpg,bmp,png,pdf|file|max:60000' ]); $diary->description = $attributes['description']; $diary->user_id = $attributes['user_id']; $diary->topic = $attributes['topic']; $diary->lesson_id = $attributes['lesson_id']; //dd("1 программа"); $filePaths=[]; if(request()->hasFile('files')) { foreach (request()->file('files') as $file) { $path = $file->store('файлы'); $filePaths[] = $путь; } } if(request()->input('save_files')){ foreach (request()->input('save_files') as $path){ $filePaths[] = $путь; } } unset($attributes['save_files']); unset($attributes['files']); $attributes['file_paths'] = json_encode($filePaths); $дневник->обновление($атрибуты); return redirect()->route('дневник')->with('успех', 'Позиция изменена'); } Моя блейд-форма обновления файлов выглядит так (форма сохранения файлов аналогична):
@csrf @method('ИСПРАВЛЕНИЕ') {{old('description', $diary->description)}} @foreach($users как $user) user->id === $user->id ? 'выбрано' : ''}}> {{$user->имя}} @endforeach @foreach($уроки как $уроки) id === $diary->lesson_id ? 'выбрано': ''}} >{{$lesson->название_урока}} @endforeach @if($diary->пути_файлов) Определить возможность использования @foreach(json_decode($diary->file_paths) как $index => $filePath) {{basename($filePath)}} @endforeach @foreach($errors->get('save_files.*') как $error) @endforeach @endif {{ __('Обновлять') }} Спасибо за помощь!
Было бы здорово, если бы кто-нибудь просто проверил мой код и дал мне отзыв, все ли с ним в порядке. Это работает, но я не считаю, что это лучшее решение.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Обзор и руководство по структуре кода Swift с реализацией списка загрузки
Anonymous » » в форуме IOS - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Вход в систему веб -сайта с помощью вывода и сохранения вывода и сохранения вывода и сеанса?
Anonymous » » в форуме Php - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-