передать данные модели для просмотра - PullRequest
0 голосов
/ 06 октября 2019

попробуйте передать модель для просмотра, и я получил ошибку

модель

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cat extends Model
{
    //
    protected $table ='Cat';
   protected $primaryKey = 'id';
}

контроллер

<?php

namespace App\Http\Controllers;

use App\Cat;
use Illuminate\Http\Request;

class CatController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $cats = Cat::all();

        return view('index', compact('cats'));
    }

, и я пытаюсь проверить это в veiw

 {{dd($cats)}}

сообщение об ошибке

Неопределенная переменная: cats (Просмотр: C: \ xampp \ htdocs \ ecommece \ resources \ views \ app \ template.blade.php)

1 Ответ

0 голосов
/ 06 октября 2019

Как работает Laravel, когда вы передаете данные в представление, они будут доступны только для этого представления и других блейд-файлов, которые вы включаете непосредственно в это представление, поскольку это будет в их области действия, тогда как файл template.blade.php не't.

Насколько я знаю, вы можете либо просто получить доступ к переменной $cat из представления индекса, либо перейти к вашему BaseController, который будет находиться в этом каталоге:

app \ Http \ Controllers \ Controller.php

И в вашем конструкторе может быть что-то вроде этого:

public function __construct()
{
    $cats = Cat::all();

    View::share(['cats' => $cats]);
}

Словопредупреждение, второй параметр означает, что переменная $cats будет доступна при каждой загрузке страницы, инициируемой любым контроллером, который расширяет базовый контроллер, так что это не самый эффективный подход, так как это означает, что база данных запрашивается каждыйвремя загрузки страницы для всех записей вашей модели Cat, что может не потребоваться при каждом запросе.

Хотя, говоря, что выВы также можете просто использовать конструктор для CatController таким же образом, чтобы, по крайней мере, ограничить загрузку модели Cat для запросов к этому контроллеру.

В моем варианте кажется, что это может стоитьучитывая реструктуризацию ваших шаблонов блейдов, чтобы сделать использование переменной $cats более доступным из представления index.blade.php.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...