laravel 5.7 данные не переданы на просмотр - PullRequest
1 голос
/ 10 марта 2019

Я пытаюсь передать свои данные статьи в одностраничную статью с именем article.blade.php, хотя все данные записываются в базу данных, но когда я попытался вернуть их в моем представлении, ничего не показывалось, и [] было пустой. Ничего не вернулось.

это моя статья Controller.php

<?php
namespace App\Http\Controllers;

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

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

это моя модель:

<?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');
    }
}

и это мой маршрут

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

Ответы [ 3 ]

2 голосов
/ 10 марта 2019

Измените свой код на

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

изменить маршрут на

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

И модель

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

См. Документы https://laravel.com/docs/5.7/routing#route-model-binding

2 голосов
/ 10 марта 2019

Возможно, вы не получаете никаких данных, потому что вы не указали, что используете title_slug в качестве ключа маршрута для привязки модели в вашей модели.

Добавьте это в свой класс модели, и оно должно дать вамdata

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

Затем вы можете вернуть данные в формате json, view или другом формате.

1 голос
/ 10 марта 2019

В зависимости от того, что вы пытаетесь архивировать, вам нужно либо ...

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

.. для ответа json, либо ..

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

для передачи статьи вопределенный взгляд

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...