繁体   English   中英

如果是照片,如何更新传入值? [拉拉维尔 9]

[英]How do I update the incoming value if it's a photo? [LARAVEL 9]

我有个问题。

数据库设置表: 在此处输入图像描述

添加新设置时,我正在发送这样的数据:

           <div class="form-group">
                <label>Tip</label>
                <select class="form-control" name="type">
                    <option value="text">Kısa yazı</option>
                    <option value="file">Dosya (Resim vb.)</option>
                    <option value="textarea">Uzun yazı</option>
                    <option value="ckeditor">Detaylı Metin Editörü</option>
                </select>
            </div>

我在编辑时查询这个:

              @if ($setting->type == 'file')
                    <div class="form-group">
                <img width="200" height="100" src="{{ asset('storage/' . $setting->value) }}">                   
                    </div>
                    <div class="form-group">
                        <input type="file" name="value" class="form-control" />
                    </div>
                @else
                    <div class="form-group">
                        <label>Açıklama:</label>
                @endif

更新方法:

 public function update(Request $request, Setting $setting)
{
    $request->validate([
        'key' => 'required',
        'value' => 'required',
        'type' => 'required',
        'description' => 'required',
    ]);




    $setting->update([
        'key' => $request->key,
        'value' => $request->value,
        'type' => $request->type,
        'description' => $request->description,

    ]);




    return redirect()->route('admin.settings.index')->with('message', 'Ayar başarıyla güncellendi.');
}

我的问题是:如果价值部分是照片,我如何将其更新为照片...

您可以使用UploadedFilestorestoreAs来存储上传的文件,然后将文件路径作为存储在数据库中。

并且不要忘记在表单上有enctype="multipart/form-data"

public function update(Request $request, Setting $setting)
{
    $validated = $request->validate([
        'key' => 'required',
        'value' => 'required',
        'type' => 'required',
        'description' => 'required',
    ]);

    if($request->hasFile('value') && $request->file('value')->isValid() ){
        $validated['value'] = $request->file('value')->store('/files', 'public');
    }


    $setting->update($validated);




    return redirect()->route('admin.settings.index')->with('message', 'Ayar başarıyla güncellendi.');
}

Laravel 文档 - 请求 - 文件

**这就是我解决问题的方法,这是一个简单的问题,对不起**

    public function update(Request $request, Setting $setting)
{
    $request->validate([
        'key' => 'required',
        'type' => 'required',
        'description' => 'required',
    ]);

    $value = $setting->value;
    if ($request->type == 'file') {
        $value = $request->file('value')->store('public/settings');
    } else {
        $value = $request->value;
    }

    $setting->update([
        'key' => $request->key,
        'type' => $request->type,
        'description' => $request->description,
        'value' => $value,
    ]);

    return redirect()->route('admin.settings.index')->with('message', 'Ayar başarıyla güncellendi.');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM