Bonjour, jaimerais votre conseil , j ai une liste de voiture j ai trois fonctions qui fonctionnent mais la Quatrieme je n arrive pas a la parametrer.
voila ma problematique
dans les premieres j, je selectionne des voiture via une case à cocher , soit j assign soit je desagigne ou soit je supprime ca c est ok
pour open j aimerais que si je selectionne et que je lance le process j aimerais que les fenetres s ouvre grace a get.edits.car

j espere etre precis.
merci de votre retour

public function postBulkAction(){
$carIDs = Input::get('car_id');
if($carIDs){
if(Input::get('type') == "delete"){
foreach($carIDs as $carID){ Car::find($carID)->delete(); }
return back()->with('message', 'Cars have been deleted!');
}else if(Input::get('type') == "assign"){
foreach($carIDs as $carID){ CarSite::create(['car_id' => $carID, 'site' => 'FLO']); }
return back()->with('message', 'Cars have been assigned to IFLO!');
}else if(Input::get('type') == "deassign"){
foreach($carIDs as $carID){ CarSite::where('car_id', intval($carID))->delete(); }
return back()->with('message', 'Cars have been deassigned from FLO!');
}else if(Input::get('type') == "open"){
foreach($carIDs as $carID){ Car::find ('car_id', intval($carID))->route('get.edit.cars'); }
return back()->with('message', 'Cars have been opened);

}
}else{
return back()->with('message', "You didn't select any cars!");```

4 réponses


Déjà je reposte le code en propre x)

public function postBulkAction(){
    $carIDs = Input::get('car_id');

    if($carIDs){
        if(Input::get('type') == "delete"){
            foreach($carIDs as $carID){
                Car::find($carID)->delete();
            }

            return back()->with('message', 'Cars have been deleted!');
        } else if(Input::get('type') == "assign"){
            foreach($carIDs as $carID){
                CarSite::create(['car_id' => $carID, 'site' => 'FLO']);
            }

            return back()->with('message', 'Cars have been assigned to IFLO!');
        } else if(Input::get('type') == "deassign"){
            foreach($carIDs as $carID){
                CarSite::where('car_id', intval($carID))->delete();
            }

            return back()->with('message', 'Cars have been deassigned from FLO!');
        } else if(Input::get('type') == "open"){
            foreach($carIDs as $carID){
                Car::find ('car_id', intval($carID))->route('get.edit.cars');
            }

            return back()->with('message', 'Cars have been opened');
        }
    } else {
        return back()->with('message', "You didn't select any cars!");
    }
}

comment tu as fait c est top comme ca l affichage

Un saut de ligne, trois back quotes en haut (altGr+7), a la ligne le code, re a la ligne trois back quotes, puis un saut de ligne :)

Et j'ai réarrangé ton code à la mano :p

Mmmh ok alors le probleme c'est que la nouvelle fenetre ou le nouvel onglet est géré coté client, pas coté serveur

Tu peux tenter avec un peu de JS:

Le controller

return redirect->back()->with([
    'opens' => $carsIdOpen,
]}

La vue

@if($carsIdOpen)
    @foreach($carsIdOpen as $carIdOpen)
        <a href="{{ route('get.edit.open', $carIdOpen) }}" target="_blank" class="car_id--open></a>
    @endforeach
@endif

Toujours dans la vue le JS

<script>
    window.addEventListener('load', (event) => {
        document.getElementsByClassname('car_id--open').map((car) => {
            windows.open(car, '_blank') /* ou car.url, ou car.href, faudra debug car avec console.log(car) pour voir ce qu'il faut mettre pour chopper le lien */
        })
    })
</script>

En gros tu retournera dans ta vue avec un parametre qui contiendra une liste de carsId, et dans la vue si il y'a ce parametre qui existe ca va générer des liens, et le js va récupérer ces liens et les ouvrir dans un nouvel onglet