当我在(管理/设置)中进行保存时,我得到了(local.ERROR:未定义索引:utubelink)错误

问题描述 投票:0回答:2

当我在(管理/设置)中进行保存时,出现了(local.ERROR:未定义索引:utubelink)错误 它只是在(管理/设置)其他管理页面工作正常。 我无法进行任何更改,例如更改网站的徽标或名称。

laravel.log

[2022-01-08 15:46:38] local.ERROR: Undefined index: utubelink {"exception":"[object] (ErrorException(code: 0): Undefined index: utubelink at /home/u0462672/new.maxtella.net/app/Http/Controllers/Admin/Settings.php:44)

设置.php

namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Model\Setting;
use Storage;
class Settings extends Controller {
    public function setting() {
        return view('admin.settings.settings', ['title' => trans('admin.settings')]);
}

public function setting_save() {
    $date=$this->validate(request(), [
        'logo'=>v_image(),
        ],[],
        [
            'logo'=>trans('admin.logo'),
            'icon'=>trans('admin.icon')
        ]);
    $data = request()->except(['_token', '_method']);

    if(request()->hasFile('logo')) {
        $file = request()->file('logo');
        $name = str_random(21) . time() . '.' . $file->getClientOriginalExtension();
        $ext = $file->getClientOriginalExtension();
        $size = $file->getSize();
        $mim = $file->getMimeType();
        $realpath = $file->getRealPath();
        $file->move(public_path('upload/settings/'), $name);
        $data['logo'] =  $name;

    }
    if(request()->hasFile('imgindex')) {
        $file = request()->file('imgindex');
        $name = str_random(21) . time() . '.' . $file->getClientOriginalExtension();
        $ext = $file->getClientOriginalExtension();
        $size = $file->getSize();
        $mim = $file->getMimeType();
        $realpath = $file->getRealPath();
        $file->move(public_path('upload/settings/'), $name);
        $data['imgindex'] =  $name;
    }

    $data['utubelink'] = $data['utubelink'] != '' ? str_replace("watch?v=", "embed/", $data['utubelink']) : '';

    Setting::orderBy('id', 'desc')->update($data);
    session()->flash('success', trans('admin.updated_record'));
    return redirect(aurl('settings'));
}
}

请问如何解决它?

php laravel laravel-8
2个回答
0
投票

好的,这就是问题所在。 错误日志明确指出第 44 行有问题。您正在尝试从不存在的 $data 数组访问 utubelink。

$data['utubelink'] = $data['utubelink'] != '' ? str_replace("watch?v=", "embed/", $data['utubelink']) : '';

替换为

$data['utubelink'] = ($data['utubelink'] ?? null) ? str_replace("watch?v=", "embed/", $data['utubelink']) : '';

我希望您使用的是 PHP 7.0 或更高版本。阅读有关 PHP 中的 Null Coalescing Operator 的更多信息,或者直接使用

isset()


0
投票

您可以使用

optional
Laravel 辅助方法来防止此类错误。

$data['utubelink'] = ! blank(optional($data)['utubelink']) ? str_replace("watch?v=", "embed/", $data['utubelink']) : '';

了解更多:https://laravel.com/docs/8.x/helpers#method-optional

© www.soinside.com 2019 - 2024. All rights reserved.