У меня есть контроллер формы для инвентаря, где люди могут добавлять предметы и добавлять счета, руководства и т. Д. При создании предметов. Моя проблема в том, что я тоже хочу получить имя файла (например, Билла для загруженного файла), но я хочу только требовать его, если у них действительно есть файл, выбранный в форме.
мой код прямо сейчасвыглядит так:
Я попробовал все, как required_unless, required_if, но ничего не работает. Может быть, я делаю что-то не так или моя идея просто не работает с этими правилами проверки?
Проверка в контроллере:
public function save(Request $request)
{
$validatedData = $request->validate([
'file' => 'nullable|file',
'files_label' => 'required_unless:file,empty|string',
]);
Сообщение об ошибке в моем html-файле: files_label должен бытьстрока (так что я думаю, что она все еще требуется) ...
мой клинок выглядит так
<input class="form--textinput" name="files_label" id="files_label" value="{{old('files_label')}}">
<input type="file" class="custom-file" name="file" id="file" value="{{old('file')}}">
Как я могу заставить его работать так, просто требуется file_label, если я выбрал файлзагрузить?
ОБНОВЛЕНИЕ 1: тоже попробовал с type = "text". все еще появляется сообщение об ошибке: «Метка файлов должна быть строкой».
ОБНОВЛЕНИЕ 2: Итак, я удалил требование типа «строка», и теперь оно выглядит так, как будто оно работает. он не хочет, чтобы поле files_label было строкой. required_unless теперь работает так же, как выглядит. Может кто-нибудь сказать мне, почему это так? Зачем ему строка, если поле вообще не требуется?
код теперь выглядит так:
'file' => 'nullable|file',
'files_label' => 'required_unless:file,',