尝试存储图像并将信息存储在数据库表中时遇到问题

时间:2020-08-15 09:35:53

标签: laravel-7

我已经建立了一个新表单,允许某人添加一个用户可以管理的个人资料。

这是一个非常简单的表格,其中包含姓名,头像,运动和描述4个字段

<form method="POST" action="{{ route('add') }}">
                        @csrf

                        <div class="form-group row">
                            <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Name') }}</label>

                            <div class="col-md-6">
                                <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}" required autocomplete="name" autofocus>

                                @error('name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row">
                            <label class="col-md-4 col-form-label text-md-right"
                                    for="avatar"
                            >
                                Avatar
                            </label>

                            <div class="col-md-6">
                                <input class="form-control @error('name') is-invalid @enderror" value="{{ old('name') }}"
                                        type="file"
                                        name="avatar"
                                        id="avatar"
                                >

                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="name" class="col-md-4 col-form-label text-md-right">{{ __('Sport') }}</label>

                            <div class="col-md-6">
                                <select name="sport" id="sport" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ old('name') }}">
                                    <option value="Football">Football</option>
                                    <option value="Cricket">Cricket</option>
                                    <option value="Hockey">Hockey</option>
                                    <option value="Basketball">Basketball</option>
                                </select>

                                @error('email')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="description" class="col-md-4 col-form-label text-md-right">{{ __('Description') }}</label>

                            <div class="col-md-6">
                                <input id="description" type="textarea" class="form-control @error('description') is-invalid @enderror" name="description" required>

                                @error('description')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row mb-0">
                            <div class="col-md-6 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    {{ __('Save') }}
                                </button>
                            </div>
                        </div>
                    </form>
                </div>

我添加的控制器如下

public function create()
    {
        //dd(request());

        $attributes = request()->validate([
            'name' => 'required',
            'avatar' => ['file'],
            'sport' => 'required',
            'description' => 'required'
        ]);

        if (request('avatar'))
        {
            $attributes['avatar'] = request('avatar')->store('avatars');
        }

        Players::create([
            'user_id' => auth()->id(),
            'name' => $attributes['name'],
            'avatar' => $attributes['avatar'],
            'sport' => $attributes['sport'],
            'description' => $attributes['description']
        ]);


        return redirect('/home');
    }

每次我提交表单时,我都会得到302,它会返回到添加表单。

如果我对'avatar'=> $ attributes ['avatar']的值进行硬编码,则会将记录添加到表中,除非文件不会上传到Director中。

我正在本地计算机上工作。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

here中可以看到,首先需要从请求中获取file

$attributes['avatar'] = $request->file('avatar')->store('avatars');
//                              ^^^^^^^^^^^^^^^^^ -- missing

答案 1 :(得分:0)

似乎我没有在表单上进行正确的设置。

在存储文件时仍然遇到问题,但我想尝试自己解决该问题,以便我可以边做边学。

我感谢大家的帮助

相关问题