0

我想知道如何在我的数据库中传递数据并在 Welcome.blade.php 中显示它我已经有一个数据但我不能让它显示在这个视图中

这是我code在 HomeController.php 中的。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        
        $this->middleware('auth');
        /**
          * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */

    }
    public function index()
    {
        return view('home');
    }
}

这是我在 web.php 中的代码,看到我正在使用 HomeController@index

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        
        $this->middleware('auth');
        /**
          * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */

    }
    public function index()
    {
        return view('home');
    }
}

现在在我的 Welcome.blade.php 我想在我的数据库中显示数据,我现在的代码就是这个。

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                @foreach($posts ?? '' as $post)
                <div class="card-header">
                    {{$post->title}}
                </div>
                @endforeach
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

这是我的 web.php 代码

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('about', function () {
    return view('about');
})->middleware('checking');

Auth::routes(['register' => false]);

Route::group(['middleware' => 'auth'], function(){

    Route::get('/home', [
        'uses' => 'HomeController@index',
        'as' => 'home'
    ]);

    Route::get('/post/create', [

        'uses' => 'PostsController@create',
        'as' => 'post.create'
    ]);
    
    Route::post('/blogs/store', [

        'uses' => 'PostsController@store',
        'as' => 'blogs.store'
    ]);

    Route::get('/blogs/delete/{id}', [

        'uses' => 'PostsController@destroy',
        'as' => 'blogs.delete'
    ]);

    Route::get('/blogs/edit/{id}', [

        'uses' => 'PostsController@edit',
        'as' => 'blogs.edit'
    ]);

    Route::post('/blogs/update/{id}', [

        'uses' => 'PostsController@update',
        'as' => 'blogs.update'
    ]);


    Route::get('/posts', [
    
        'uses' => 'PostsController@index',
        'as' => 'posts'
    ]);
});

Route::get('register', function () {

    return redirect('/home');
});

这也是我的 Post.php 模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = [

    'title','content','featured'
    ];

    public function getFeaturedAttribute($featured) {
        
        return asset($featured);
    }
}

但为什么我会收到这种错误?

为 foreach() 提供的参数无效(查看:C:\xampp\htdocs\porge\dev\resources\views\welcome.blade.php)

4

2 回答 2

1

好吧。这就是我所看到的。您想在欢迎视图中显示数据,该视图直接加载到您的路线中而不传递任何数据。

Route::get('/', function () {
    return view('welcome');
});

=> 我的建议:传递数据的常用方法是使用控制器。因此,您可以在您的情况下使用 HomeController 或创建一个 WelcomeController(我将在接下来使用)。

WelcomeController 中的公共索引函数

public function index()
{
    $posts = Post::all();
    return view('welcome')->with('posts', $posts);
}

您的路线 /

Route::get('/', [
    'uses' => 'WelcomeController@index',
    'as' => 'welcome_page'
]);

然后你在欢迎视图中像这样循环帖子

@foreach($posts as $post)
    <div class="card-header">
        {{$post->title}}
    </div>
@endforeach

希望这会有所帮助。

于 2020-07-04T06:38:23.080 回答
0

我在这里看到几个问题。是的,您应该发布对这个请求很重要的 web.php 部分。假设您的“帖子”表有一个名为Post

public function index()
{
   $posts = Post::all();
   return view('home', compact('posts'));
}

在你的刀片中:

<div class="card">
  <div class="card-body">
    <ul class="list-group">
    @foreach($posts as $post)
        <li class="list-group-item">
            {{$post->title}}
        </li>
    @endforeach
     </ul>
   </div>
</div>

这样看起来会干净很多,你不觉得吗?

于 2020-07-04T04:41:05.497 回答