私はこれで何日か保管しました。私はStackOverFlowの他のユーザーから助けを得るが、私たちはそれを解決することはできない。Laravel:新しいフォルダを作成し、内容をコピーしてください
問題は、私は私のプロジェクトを編集することができ、フォームを持っている私は'storage/public/projects/{$slug->name}'
上のフォルダを持っている、フォームは次のようになります。
<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>
<br><br>
</div>
アイデア私はスラグとドンを変更したときでした入力タイプファイルで新しい画像を選択すると、新しいフォルダを作成し、最後のフォルダを他の名前で削除し、containst(フォーム上で選択していない2つの画像ですがデータベース上にあります)をコピーします。
私たちは、このコードを試してみて、何も動作:
CODE 1
public function updateProject(Request $request, $id) //Actualizar la informacion de un trabajador
{
$project = Project::find($id);
if ($request->has('slug')){
\Storage::disk('projects')->deleteDirectory($project->slug);
}
$project->slug = $request->input('slug');
\Storage::disk('projects')->makeDirectory($project->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;
\Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.jpg');
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;
\Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.jpg');
$project->save();
}
CODE 2
$project = Project::find($id);
$oldSlug = $project->slug;
if (strcmp($oldSlug, $request->input('slug')) !== 0) {
$project->slug = $request->input('slug');
\Storage::disk('projects')->makeDirectory($project->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;
\Storage::disk('projects')->putFileAs($project->slug,$project->pathheader,'header.jpg');
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;
\Storage::disk('projects')->putFileAs($project->slug,$project->pathhome,'home.jpg');
$project->save();
if (strcmp($oldSlug, $request->input('slug')) !== 0) {
\Storage::disk('projects')->deleteDirectory($oldSlug);
}
CODE 3
を$project = Project::find($id);
$oldSlug = $project->slug;
if (strcmp($oldSlug, $request->input('slug')) !== 0) {
$project->slug = $request->input('slug');
\Storage::disk('projects')->makeDirectory($project->slug);
}
$project->order = $request->input('order');
$project->public = $request->input('public');
if($request->hasFile('pathheader')){
$project->pathheader = \Storage::disk('projects')->putFileAs($project->slug,$request->file('pathheader'),'header.jpg');
}
if($request->hasFile('pathhome')){
$project->pathhome = \Storage::disk('projects')->putFileAs($project->slug,$request->file('pathhome'),'home.jpg');
}
$project->save();
if (strcmp($oldSlug, $request->input('slug')) !== 0) {
\Storage::disk('projects')->deleteDirectory($oldSlug);
}
、あなたはあなたのプログラムのために困難にそれを作っています。あなたは本当に毎回スラグを変える必要がありますか?はいの場合は、slug_nameを変更することができても問題ないように、各slug_idの固有のフォルダ名を作成することもできます。 –
それは私がスラッグを変更する必要があるかどうかは確かではないかもしれませんが、おそらくそれはidでそれを作ることは簡単です:) –