gpt4 book ai didi

php - Laravel:无需再次选择文件即可更新数据

转载 作者:行者123 更新时间:2023-11-29 06:00:19 24 4
gpt4 key购买 nike

我有一个名为 projects 的表,其中包含以下字段:

表格信息

id、slug、order、public、pathheader 和 pathhome。

创建 View

存储数据的表单如下所示:

<div id="formcreateproject">
<form enctype="multipart/form-data" id="myFormProject" name="myFormProject">
<input type="hidden" name="_token" value="{{ Session::token() }}">

<div class="form-group">
<label name="title">Slug:</label>
<input type="text" id="slug" name="slug" placeholder="ejemplo-de-slug" class="form-control form-control-sm"><br>
<!-- <label name="order">Order:</label>
<input type="number" id="order" name="order" class="form-control form-control-sm">-->
<!--<label name="public">Public:</label>-->
<table>
<tr>
<td>
<img src="" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;" onerror="this.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='">
<input type="file" name="pathheader" id="pathheader" class="form-control-file" aria-describedby="fileHelp" style="display:none;">
</td>
<td>
<img src="" id="img2" class="img2" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;" onerror="this.src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII='">
<input type="file" name="pathhome" id="pathhome" class="form-control-file" aria-describedby="fileHelp" style="display:none;"><br>
</td>
</tr>
<tr>
<td>
<input type="button" name="" value="Seleccionar header" id="browse_file" class="btn btn-danger form-control">
</td>
<td>
<input type="button" name="" value="Seleccionar home" id="browse_file2" class="btn btn-danger form-control">
</td>
</tr>
</table><br>
<input type="submit" value="Crear Proyecto" id="createprojectsubmit" class="btn btn-danger btn-md">
<br><br><br>

</div>
</form>

</div>

保存数据的功能

函数看起来像这样:

 public function storeProject(Request $request)
{

$project = new Project();
$project->slug = $request->input("slug");
//$project->order = $request->input("order");
$project->order = DB::table('projects')
->where('order', DB::raw("(select max(`order`) from projects)"))
->first()
->order + 1;
$project->public = 0;
$project->pathheader = $request->file('pathheader');
$project->pathhome = $request->file('pathhome');

\Storage::disk('projects')->makeDirectory($project->slug);
\Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.jpg');
\Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.jpg');
$project->save();
}

这真的很好用,并在 pathheader 和 pathhome 中保存了如下值:/tmp/phQX0ddm。

查看更新数据

<div class="form-group">
<label><strong>Slug</strong></label>
<textarea type="text" class="form-control form-control-sm" id="slug" name="slug" rows="1" required style="resize:none;">{{$project->slug}}</textarea>
</div>

<div class="form-group">
<label><strong>Order</strong></label>
<textarea type="number" class="form-control form-control-sm" id="order" name="order" rows="1">{{$project->order}}</textarea>
</div>

<div class="form-group">
<label><strong>Public</strong></label>
<textarea type="text" class="form-control form-control-sm" id="public" name="public" value="" rows="1">{{$project->public}}</textarea>
</div>

<div class="form-group">
<table>
<tr>
<td>
@if (Storage::disk('projects')->has($project->slug))
<img src="{{ asset('/storage/projects/'.$project->slug.'/header.jpg') }}" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
@else
<img src="" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
@endif
<input type="file" name="pathheader" id="pathheader" class="form-control-file" aria-describedby="fileHelp" style="display:none;">
</td>
<td>
@if (Storage::disk('projects')->has($project->slug))
<img src="{{ asset('/storage/projects/'.$project->slug.'/home.jpg') }}" id="img" class="img" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
@else
<img src="" id="img2" class="img2" style="width:100%;height:200px;background-color:#ccc;border:2px solid gray;">
@endif
<input type="file" name="pathhome" id="pathhome" class="form-control-file" aria-describedby="fileHelp" style="display:none;"><br>
</td>
</tr>
<tr>
<td>
<input type="button" name="" value="Seleccionar header" id="browse_file" class="btn btn-danger form-control">
</td>
<td>
<input type="button" name="" value="Seleccionar home" id="browse_file2" class="btn btn-danger form-control">
</td>
</tr>
</table>

更新数据的函数

public function updateProject(Request $request, $id) 

//Actualizar la informacion de un trabajador
{
$project = Project::find($id);
$project->slug = $request->input('slug');
$project->order = $request->input('order');
$project->public = $request->input('public');
if($request->hasFile('pathheader')){
$project->pathheader = $request->file('pathheader');
\Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.jpg');
}
$project->pathheader = Project::find($id)->pathheader;
if($request->hasFile('pathhome')){
$project->pathhome = $request->file('pathhome');
\Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.jpg');
}
$project->pathhome = Project::find($id)->pathhome;
$project->save();
}

问题是,如果我在更新数据时没有再次选择文件,则不会加载图像。

我该如何解决这个问题?我的第一个想法是获取 pathhome 和 pathheader 的值并将其放在功能 Controller 上以使用相同的值再次更新数据,但不起作用。

我希望有人能帮助我,我将非常感激。

最佳答案

您可以像这样使用项目模型:

$pathheader = Project::find($id)->pathheader;

关于php - Laravel:无需再次选择文件即可更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45612455/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com