我正在尝试将我的文章数据传递给名为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');
将您的代码更改为
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';
}
请参阅docs https://laravel.com/docs/5.7/routing#route-model-binding
您可能没有获得任何数据,因为您没有指定使用title_slug作为模型中模型绑定的路径键。
将其添加到模型类中,它应该为您提供数据
public function getRouteKeyName()
{
return 'slug';
}
然后,您可以以json,view或其他格式返回数据。
根据您尝试存档的内容,您需要......
return $article->toJson(); // or ->toArray();
..为json回应或..
return view(..., ['article' => $article])
用于将文章传递到某个视图