簡體   English   中英

使用 laravel 中的 controller 將數據從數據庫傳遞到刀片視圖

[英]Passing data from the database to a blade view using a controller in laravel

我找到了幾種方法來做我需要做的事情,第一種方法是使用 web.php 文件使用路由。 但根據一些帖子,這會在應用程序中產生漏洞。 所以我發現正確的用法是使用管理數據庫查詢的 controller。

我創建了一個名為 EventsController 的 controller 並將其放入其中:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class EventsController extends Controller
{
    public function index()
    {
        $events = DB::table('eventaries')->select('id','coursname','start', 'end', 'category')->get();

        return view('components.course-list')->with('eventaries', $events);
    }
}

刀片位於文件夾內: /resources/views/components/course-list.blade.php

在刀片內部,我使用以下代碼:

<div class="px-6 py-20">
    <div class="max-w-7xl mx-auto">
        <!-- Course List -->

        {{ $events->coursname}}


    </div>
</div>

但我得到了錯誤:

Undefined variable $events (View: D:\laragon\www\censored\resources\views\components\course-list.blade.php)

->with('eventaries', $events) 表示您將 $events 的值作為事件傳遞。 因此,在刀片中,您需要使用 $eventaries 來訪問它。 所以現在刀片代碼將是:

    <div class="px-6 py-20">
    <div class="max-w-7xl mx-auto">
        <!-- Course List -->

        {{ $eventaries->coursname}}


    </div>
</div>

您已將“eventaries”作為事件的名稱。 因此,您只能在視圖中使用 $eventaries 訪問它,而不是作為事件訪問它。

您正在使用“with”方法將值傳遞給視圖,它就像一個值/鍵對 (->with($key, $value))。 在你的情況下,你聲明它像

return view('components.course-list')->with('eventaries', $events);

因此,在視圖中,您可以通過 $eventaries 而不是 $events 訪問該值。 此外,查詢結果是一個集合,您需要循環它以獲取每個項目

<div class="px-6 py-20">
    <div class="max-w-7xl mx-auto">
        <!-- Course List -->
        @foreach($eventaries as $event)
        {{ $event->coursename }}
        @endforeach
    </div>
</div>

當在視圖上使用with方法時,第一個參數(鍵)成為視圖中變量的名稱,第二個參數(值)成為它的值。

這意味着您需要在視圖中使用$eventaries而不是$events或重命名 controller return view('components.course-list')->with('events', $events);的鍵。 .

此外,我不確定直接在路由文件中定義操作會導致漏洞。 我只是認為路由文件(通常是開發人員在探索 Laravel 應用程序時的第一個入口點)變得難以閱讀/管理。

是什么導致了這個問題?
創建此問題的問題是因為路由器從未訪問我創建的 controller。 我將以下代碼添加到我的路由器以訪問 controller:

Route::get('/kursangebote/{course}', ['App\Http\Controllers\EventaryController', 'index'])->name('course.list-list');

在那里我添加了我想要的邏輯。

['App\Http\Controllers\EventaryController', 'index']

App\Http\Controllers\EventaryController是我使用的 controller,並index controller 里面的 function 我需要調用。 將 Eloquent 用於此https://laravel.com/docs/8.x/eloquent可能是一個更好的主意

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM