我的客户想使他的徽标在网站上动态化。因此,在仪表板中,我在管理仪表板中包含一个字段名称“设置”,他可以在其中更改其徽标。为此,我需要更新不带id的设置表,因为最初数据库中没有任何数据。要更新表而不创建需要“ id”。因此,我面临一个问题。 如果有其他替代方法可以使徽标在网页中动态化,请建议我。
<form action="{{route('updatesettings',['id'=>$settings->id])}}" method="post" enctype="multipart/form-data">
{{csrf_field()}}
<div class="form-group">
<label for="changelogo">CHANGE LOGO</label><br>
<input type="file" name="image" class="form-control ">
</div>
<div class="form-group">
<label for="changelogo">CHANGE Image for About Home page</label><br>
<input type="file" name="image1" class="form-control ">
</div>
<div class="form-group">
<label for="changelogo">CHANGE First Image for About page</label><br>
<input type="file" name="image2" class="form-control ">
</div>
<div class="form-group">
<label for="changelogo">CHANGE Second Image for About page</label><br>
<input type="file" name="image3" class="form-control ">
</div>
<div class="form-group">
<label for="about">About</label>
<textarea name="about" class="form-control"></textarea>
</div>
<div class="form-group">
<button class="btn btn-primary">update</button>
</div>
</form>
控制器
public function updatesettings(Request $request)
{
$data['about'] = $request->about;
if($request->hasFile('image'))
{
$image = $request->file('image');
$ext=$image->getClientOriginalExtension();
$imageName = md5(microtime()).'.'.$ext;
$uploadPath = public_path('uploaded/');
if($image->move($uploadPath,$imageName))
{
$data['image'] = $imageName;
}
}
if($request->hasFile('image1'))
{
$image = $request->file('image1');
$ext=$image->getClientOriginalExtension();
$imageName = md5(microtime()).'.'.$ext;
$uploadPath = public_path('uploaded/');
if($image->move($uploadPath,$imageName))
{
$data['image1'] = $imageName;
}
}
if($request->hasFile('image2'))
{
$image = $request->file('image2');
$ext=$image->getClientOriginalExtension();
$imageName = md5(microtime()).'.'.$ext;
$uploadPath = public_path('uploaded/');
if($image->move($uploadPath,$imageName))
{
$data['image2'] = $imageName;
}
}
if($request->hasFile('image3'))
{
$image = $request->file('image3');
$ext=$image->getClientOriginalExtension();
$imageName = md5(microtime()).'.'.$ext;
$uploadPath = public_path('uploaded/');
if($image->move($uploadPath,$imageName))
{
$data['image3'] = $imageName;
}
}
if(Setting::first()->update($data))
{
return redirect()->route('showsettings');
}
return redirect()->route('showsettings');
}
试图获取非对象的属性“ id”(查看:C:\ xampp \ htdocs \ odan \ resources \ views \ admin \ modules \ settings \ setting.blade.php)
答案 0 :(得分:0)
正如您所说的,最初没有数据权。那为什么要从form
传递ID。从您的问题来看,settings
表中总会有一个条目。
因此,制作一个没有id的简单route
并通过从设置Setting::first() // instially empty
中获取数据来显示数据
然后在命中提交时更新您建模的模型
$setting = Setting::first();
$setting->myfields = $fileds;
$setting->save();
就这样。
即使您可以使用laravel的updateOrCreate方法
答案 1 :(得分:0)
您需要为其保留默认数据。制作数据库表以获取徽标。最初,您可以保留“ defaultimg”,并且当用户想要对其进行更新时,请获取该行ID并对其进行更新,如果您只有1个徽标,则请进行验证以确保用户不能在该表中添加多个数据(“徽标”表) )。希望你能得到它。