Bonjour,

J'ai un petit souci mais qui sort de nulle part: Je suis actuellement la formation Laravel 10 et dans la vidéo routing on apprend a crée un lien vers un article dans un tableau. Voici le code

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::prefix('/blog')->name('blog.')->group(function () {
    Route::get('/', function (Request $request){
        return[
            "link"=> \route('blog.show', ['slug' =>'article', 'id'=> 15]),
        ];
    })->name('index');

    Route::get('/{slug}-{id}', function (string $slug, string $id, Request $request){
        return [
            "slug"=> $slug,
            "id" => $id,
            "name" =>$request->input('name')
        ];
    })->where([
        'id'=> '[0-9]+',
        'slug'=> '[a-z0-9\-]+'
    ])->name('show');
});

Je veux bien évidemment obtenir ce lien comme montré dans la vidéo:

"link": "http://boutique.test/blog/article/15"

Mais sur la vue le lien obtenue est incrusté d'antislash et ce, avant chaque slash de l'URL:

"link": "http:\/\/boutique.test\/blog\/article\/15" (comme ceci, rendant le lien inutilisable)

ET j'ignore vraiment d'où cela vient et comment m'en débarasser... Mon nvaigateur est Opéra, mais cela fait sur Chrome (il y a que firefox qui corrige le problème quand on clique sur le format JSON mais en brut le problème est aussi là) Est-ce qu'il y a que moi? Et quelqu'un a-t-il une solution?

Je vous remercie d'avance :)

3 réponses


Je pense que le problème se situe au niveau de ta vue non? c'est comme si les caractères étaient échappés, tu utilises Blade? Si tu peux mettre le bout de code de la vue qui affiche le lien en question ce serait bien.

Je pense que le problème se situe au niveau de ta vue non? c'est comme si les caractères étaient échappés, tu utilises Blade? Si tu peux mettre le bout de code de la vue qui affiche le lien en question ce serait bien.

ça ne retourne pas une vue mais une réponse de type json (car il retourne un tableau). Je vais tester de mon côté mais je crois que c'est normal qu'il échape lors de l'affichage car sinon \ serait interprété par le navigateur et donc cela dépend seulement de l'outils utilisé.

PS: Je confirme que c'est normal car cela ne vient pas de Laravel, mais de PHP et de la fonction json_encode qui de base échape les \

Dans l'inglet réseau de chrome dans la partie "response" j'ai : {"link":"http:\/\/127.0.0.1:8000\/blog\/article-15"}. Mais dans la partie préview j'ai { "link": "http://127.0.0.1:8000/blog/article-15" } et avec le plugin "Json Viewer Pro" j'ai bien aussi l'affichage sans les échapements

D'accord merci beaucoup! Je savais pas trop comment aborder le problème. Mais ce cas je suis rassuré!. Je vous remercie tous les deux!