【发布时间】:2019-07-23 22:44:48
【问题描述】:
我正在使用 Laravel 5.6,但在将数据传递到我的刀片文件时遇到问题。
博客控制器:
namespace App\Http\Controllers;
use App\Mail\Practice;
use App\Mail\Mailable;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Post;
use Session;
class BlogController extends Controller
{
public function getSingle($slug){
// Fetch from the DB based on Slug --first stops after one, get pulls everything
$post = Post::where('slug', '=', $slug)->first();
print_r($slug);
// return the view and pass in the post object
return view('blog.single')->withPost($post);
}
}
single.blade.php:
@extends('main')
@section('title', "| $post->title")
@section('content')
<div class="row">
<div class="col-md-8 col-md-offset-2">
<h1>{{ $post->title}}</h1>
<p>{{ $post->body }}</p>
</div>
@停止
我在数据库(MySQL)中验证了名称和拼写。如果我dd($slug) 或print_r($slug) 结果是正确的。
但是,如果我这样做但使用 $title 或 $body 它会返回错误
试图获取非对象的属性(查看:/Users/jesseburger/myproject/resources/views/blog/single.blade.php)
我已经能够通过使用print_r($post) 来验证它是否拉了一个空数组,但不知道为什么。
print_r($post) 产生:
Illuminate\Database\Eloquent\Collection 对象 ([items:protected] => Array ())
当前路线:
Route::get('blog/{slug}', [
'as' => 'blog.single',
'uses' => 'BlogController@getSingle'
])->where('slug', '[\w\d\-\_]+');
【问题讨论】:
-
withPost真的是 Laravel 中的一个函数吗?也许试试return view('blog.single')->with('post', $post);,或return view('blog.single', ['post' => $post]);。 -
你真的应该实现一些在没有找到帖子时处理的东西。那么你甚至不需要 print_r,你就会知道有一个帖子。
-
我已经尝试了这两个建议,但它仍然拉一个空数组
标签: mysql laravel controller laravel-blade