3
votes

Données laravel 5.7 non transmises à la vue

J'essaie de transmettre les données de mon article à l'article d'une seule page nommé article.blade.php bien que toutes les données soient enregistrées dans la base de données, mais lorsque j'ai essayé de les renvoyer à mon avis, rien ne s'affiche et le [] était vide. Rien n'a été renvoyé.

ceci est mon articleController.php

Route::get('/articles/{articleSlug}' , 'ArticleController@single');

ceci est mon modèle:

<?php

namespace App;

use Cviebrock\EloquentSluggable\Sluggable;
use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    use Sluggable;

    protected $guarded = [];

    protected $casts = [
        'images' => 'array'
    ];

    public function sluggable()
    {
        return [
            'slug' => [
                'source' => 'title'
            ]
        ];
    }

    public function path()
    {
        return "/articles/$this->slug";
    }

    public function comments()
    {
        return $this->morphMany(Comment::class, 'commentable');
    }
}

et c'est mon itinéraire

<?php
namespace App\Http\Controllers;

use App\Article;
use Illuminate\Http\Request;

class ArticleController extends Controller
{
    public function single(Article $article)
    {
        return $article;
    }
}


1 commentaires

Il doit s'agir de return view ('article', ['article' => $ article]);


3 Réponses :


1
votes

Selon ce que vous essayez d'archiver, vous devez soit ...

return view(..., ['article' => $article])

.. pour la réponse json ou ..

return $article->toJson(); // or ->toArray();

pour passer un article à une certaine vue


0 commentaires

2
votes

Changez votre code en

public function getRouteKeyName()
{
    return 'slug';
}

changez la route en

Route::get('/articles/{article}' , 'ArticleController@single');

Et modèle

class ArticleController extends Controller
{
    public function single(Article $article)
    {
        return view('article', compact('article'));
    }
}

Voir la documentation https://laravel.com/docs/5.7/routing # route-model-binding


0 commentaires

2
votes

Il se peut que vous n'obteniez aucune donnée car vous n'avez pas spécifié que vous utilisez title_slug comme clé de route pour la liaison de modèle dans votre modèle.

Ajoutez ceci à votre classe de modèle et cela devrait vous donner les données p>

public function getRouteKeyName()
{
    return 'slug';
}

Ensuite, vous pouvez renvoyer les données au format json, view ou autre.


0 commentaires