當我在(管理員/設定)中保存時,我得到了(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'));
}
}
請問怎么解決?
uj5u.com熱心網友回復:
好的,這是問題所在。錯誤日志明確指出第 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().
uj5u.com熱心網友回復:
你可以使用optionalLaravel 輔助方法來防止這些型別的錯誤。
$data['utubelink'] = ! blank(optional($data)['utubelink']) ? str_replace("watch?v=", "embed/", $data['utubelink']) : '';
閱讀更多:https : //laravel.com/docs/8.x/helpers#method-optional
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/407029.html
標籤:
