2017-08-11 2 views
1

Ich habe einige Tage damit bestückt. Ich bekomme Hilfe von anderen Benutzern von StackOverFlow, aber das können wir nicht lösen.Laravel: Erstellen Sie einen neuen Ordner und kopieren Sie den Inhalt

Das Problem ist, ich habe Ordner auf 'storage/public/projects/{$slug->name}'

ich ein Formular, wo ich meine Projekte bearbeiten können, sieht die Form dies wie:

<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> 

Die Idee war, als ich die Schnecke und don ändern Wählen Sie keine neuen Bilder in der Eingabedatei, ich erstelle einen neuen Ordner, lösche den letzten Ordner mit dem anderen Namen und kopiere das Contain (die zwei Bilder, die ich nicht auf dem Formular ausgewählt habe, aber ich habe auf der Datenbank).

Wir versuchen, es dieses Codes und nichts funktioniert:

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); 
     } 
+0

Was Sie planen, ich denke nicht eine gute Praxis ist zu tun, sind Sie es schwieriger für Ihr Programm zu machen. Müssen Sie den Slug wirklich jedes Mal wechseln? Wenn ja, können Sie auch versuchen, einen eindeutigen Ordnernamen für jede slug_id zu erstellen, damit es in Ordnung ist, wenn Sie den slug_name ändern können. –

+0

Es ist nicht sicher, dass ich den Slug ändern muss, vielleicht ist es einfacher, es mit ID zu machen, es ist wahr :) –

Antwort

0

Probieren Sie es mit den Projektordner remaning:

public function updateProject(Request $request, $id) { 
    $project = Project::find($id); 

    $project->order = $request->input('order'); 
    $project->public = $request->input('public'); 

    if (strcmp($project->slug, $request->input('slug')) !== 0) { 
     Storage::disk('projects')->move($project->slug, $request->input('slug')); // rename the project folder 
     $project->pathheader = $request->input('slug').'/header.jpg'; //if it's always the image will be named header.jpg else substr($project->pathheader, strlen($project->slug)); 
     $project->pathhome = $request->input('slug').'/home.jpg'; //if it's always the image will be named home.jpg else substr($project->pathhome, strlen($project->slug)); 
     $project->slug = $request->input('slug'); 
    } 


    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(); 

} 
+0

Entwickler-Chef;) Danke –

+0

Maraboc, brauche deine Hilfe: l –

Verwandte Themen