2017-06-15 2 views
2

J'ai un problème avec l'insertion de ma forme. C'est la reprise du code, sous Laravel 5.3, que je ne connais que vaguement.exploser dans l'entrée et insérer bdd

Ainsi je dois m'adapter au code, et en fait j'ai une description de champ dans ma base de données qui devait se diviser en deux: "champ1" et "champ2" dans l'affichage tout va bien, mais quand je veux pour faire un insert, il ne fonctionne pas .. quelqu'un pourrait me diriger vers une solution ou une piste s'il vous plaît

mon avis:

<form method="POST" action="{{ url('/update/'.$data->id) }}" enctype="multipart/form-data"> 
        {{ csrf_field() }} 
        <img style="height:100px;" src="{{ URL::asset("storage/".$data["categorie"]->libelle."/micro/".$data->url)}}" alt="" /> 
        <label for="upload">Image de l'article :</label> 
        <input type="file" name="upload" /> 

        @if (count($data->langues) > 0) 

         @foreach ($data->langues as $langue) 
         <h3>{{ $langue->libelle }}</h3> 
         <input type="text" name="titrel{{ $langue->id }}" placeholder="Titre en {{ $langue->libelle }}" 
         value="{{old("titrel".$langue->id,$data->texts[$langue->id]->titre)}}" /> 
         <label for="descriptionl{{ $langue->id }}">Description en {{ $langue->libelle }}</label> 
         <textarea type="text" name="descriptionl{{ $langue->id }}" 
         placeholder="Description en {{ $langue->libelle }}">{{old("descriptionl".$langue->id,$data->texts[$langue->id]->description)}}</textarea> 
         <textarea type="text" name="champ1l{{ $langue->id }}" 
         placeholder="Aperçu en {{ $langue->libelle }}">{{old("champ1l".$langue->id,$data->texts[$langue->id]->champ1)}}</textarea> 
         <textarea type="text" name="champ2l{{ $langue->id }}" 
         placeholder="Description en {{ $langue->libelle }}">{{old("champ2l".$langue->id,$data->texts[$langue->id]->champ2)}}</textarea> 
         @endforeach 

       @endif 
        <input type="submit" value="Mettre à jour" /> 
       </form> 

mon contrôleur:

public function edit($id){ 
    $article = Article::find($id); 
    if($article == null) 
     return redirect("/home"); 
    $article->langues=Langue::all(); 
    $test= array(); 
    foreach($article->langues as $langue){ 
     $test[$langue->id]=TextArticle::firstOrNew(['idlangue' => $langue->id,'idarticle'=>$id]); 
     $myString=$test[$langue->id]->description; 
     $myArray = explode(';', $myString); 
     if(count($myArray)>1){ 
      $test[$langue->id]->champ1=$myArray[0]; 
      $test[$langue->id]->champ2=$myArray[1]; 
     } 
     elseif (count($myArray)==1) { 
      $test[$langue->id]->champ1=""; 
      $test[$langue->id]->champ2=$myArray[0]; 
     } 
    } 
    $article->texts=$test; 
    $article->categorie=Categorie::find($article->idcategorie); 
    //var_dump($test); 
    return view('articles/edit')->with("data",$article); 


} 

public function update(Request $request, $id){ 
    $article = Article::find($id); 
    $categorie = Categorie::find($article->idcategorie); 
    if($article == null) 
     return redirect("/home"); 
    $validation=[]; 
    $langues=Langue::all(); 
    foreach ($langues as $key => $value) { 
     $validation["titrel".$value->id]='max:255'; 
     $validation["descriptionl".$value->id]='max:1000'; 
     $validation["champ1l".$value->id]='max:200'; 
     $validation["champ2l".$value->id]='max:800'; 
    } 
    $this->validate($request, $validation); 


    DB::beginTransaction(); 


     try{ 
      // vérifier upload file sur Laravel 
     $file=$request->file('upload'); 
     $path=storage_path('app/public/'.$categorie->libelle); 
     if(!Filemgr::exists($path)) { 
      Filemgr::makeDirectory($path.'/mini', 0766, true); 
      Filemgr::makeDirectory($path.'/micro', 0766, true); 
     } 

     Image::make($file) 
      ->resize(1400, null, function ($constraint) { 
       $constraint->aspectRatio(); 
      }) 
      ->save($path.'/'.$article->url); 
     Image::make($file) 
      ->resize(900, null, function ($constraint) { 
      $constraint->aspectRatio(); 
      }) 
      ->save($path.'/mini/'.$article->url); 
     Image::make($file) 
      ->resize(600, null, function ($constraint) { 
       $constraint->aspectRatio(); 
      }) 
      ->save($path.'/micro/'.$article->url); 


     foreach($langues as $key=>$value){ 
      $text=TextArticle::firstOrNew(['idlangue' => $value->id,'idarticle'=>$id]); 
      $text->titre=$request->input('titrel'.$value->id); 
      $text->description=$request->input('descriptionl'.$value->id); 
      $text->save(); 
     } 

     DB::commit(); 
     } 
     catch(Exception $e){ 
      DB::rollBack(); 

     } 
     $categorie=Categorie::find($article->idcategorie); 
    return redirect("/categorie/".$categorie->libelle); 


} 

Répondre

1

en yo votre contrôleur fait cela:

public function update(Request $request, $id){ 
    $article = Article::find($id); 
    $categorie = Categorie::find($article->idcategorie); 
    if($article == null) 
     return redirect("/home"); 
    $validation=[]; 
    $langues=Langue::all(); 
    foreach ($langues as $key => $value) { 
     $validation["titrel".$value->id]='max:255'; 
     $validation["descriptionl".$value->id]='max:1000'; 
     $validation["champ1l".$value->id]='max:200'; 
     $validation["champ2l".$value->id]='max:800'; 
    } 
    $this->validate($request, $validation); 


    DB::beginTransaction(); 


     try{ 
      // vérifier upload file sur Laravel 
     $file=$request->file('upload'); 
     $path=storage_path('app/public/'.$categorie->libelle); 
     if(!Filemgr::exists($path)) { 
      Filemgr::makeDirectory($path.'/mini', 0766, true); 
      Filemgr::makeDirectory($path.'/micro', 0766, true); 
     } 

     Image::make($file) 
      ->resize(1400, null, function ($constraint) { 
       $constraint->aspectRatio(); 
      }) 
      ->save($path.'/'.$article->url); 
     Image::make($file) 
      ->resize(900, null, function ($constraint) { 
      $constraint->aspectRatio(); 
      }) 
      ->save($path.'/mini/'.$article->url); 
     Image::make($file) 
      ->resize(600, null, function ($constraint) { 
       $constraint->aspectRatio(); 
      }) 
      ->save($path.'/micro/'.$article->url); 


     foreach($langues as $key=>$value){ 
      $text=TextArticle::firstOrNew(['idlangue' => $value->id,'idarticle'=>$id]); 
      $text->titre=$request->input('titrel'.$value->id); 
      if($request->input('champ1l'.$value->id)!=null&&$request->input('champ1l'.$value->id)!=''){ 
      $text->description=$request->input('champ1l'.$value->id).';'.$request->input('champ2l'.$value->id); 
      } 
      else{ 
      $text->description=$request->input('champ2l'.$value->id); 
      } 
      $text->save(); 
     } 

     DB::commit(); 
     } 
     catch(Exception $e){ 
      DB::rollBack(); 

     } 
     $categorie=Categorie::find($article->idcategorie); 
    return redirect("/categorie/".$categorie->libelle); 


} 
+0

Ouais: D merci :) – AlexisCraig