laravel 5.7数据未传递到视图

时间:2019-03-10 20:20:47

标签: php mysql database laravel laravel-5.7

我试图将文章数据传递给名为article.blade.php的单页文章,尽管所有数据都记录到了数据库中,但是当我尝试将其返回到我的视图时,没有显示任何内容,并且[]是空的。什么也没回来。

这是我的articleController.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 个答案:

答案 0 :(得分:2)

将代码更改为

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

将路线更改为

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

模型

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

请参阅文档Image

答案 1 :(得分:2)

您可能没有获取任何数据,因为您未指定将title_slug用作模型中模型绑定的路由键。

将此添加到模型类中,它应该会给您数据

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

然后您可以以json,view或其他格式返回数据。

答案 2 :(得分:1)

根据您尝试存档的内容,您需要...

void setGrid(){
    //setting the cell height as the cell widht
    int imagWidth = cell[0][0].getLayoutParams().width;
    for(int r=0;r<rowCount;r++)
        for(int c=0;c<columnCount;c++) {
            cell[r][c].getLayoutParams().height = imagWidth;
            cell[r][c].requestLayout();
        }
}

..用于json响应或..

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

用于将文章传递到特定视图