показывает неопределенную переменную при изменении имени переменной - PullRequest
0 голосов
/ 04 июля 2018

На странице моего контроллера я пытаюсь вернуть все данные из режима просмотра. Я сохранил все данные в переменной и перешел на страницу просмотра. Когда я сохраняю имя переменной как $post, я получаю ошибку:

Undefined variable: post (View: C:\xampp\htdocs\laravel\lsapp\resources\views\posts\index.blade.php)

Страница контроллера

// PostController.php
<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Post;

class PostController extends Controller
{
    public function index()
    {
        $post = Post::all();   
        return view('posts.index')-> with('posts', $post);
    }
    //remaining code blocks

просмотр кода страницы

@extends('layouts.app')

@section('content')
<h1>this is index page.</h1>
@if(count($post) > 1)
    <h2>testing</h2>

@else
    <p>No Data</p>
@endif

@endsection

Когда я изменяю имя переменной как $ posts, она работает нормально. Почему я должен сохранять то же имя переменной, что и первый параметр сообщения?

return view('posts.index')-> with('posts', $posts);  // it works fine

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Поскольку вы отправляете свою переменную для просмотра как $posts здесь:

return view('posts.index')->with('posts', $post);

Используйте @if(count($post) > 1) в вашем представлении posts.index .

Если вы хотите использовать $post в качестве видимой переменной, отправьте ее как ->with('post', $post);

0 голосов
/ 04 июля 2018

если вы идете на

/ продавец / Laravel / рамки / SRC / Осветите / View / view.php

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

public function with($key, $value = null)
{
    if (is_array($key)) {
        $this->data = array_merge($this->data, $key);
    } else {
        $this->data[$key] = $value;
    }

    return $this;
}

Если вы не хотите использовать это, здесь есть альтернатива.

    return view('posts.index', compact('posts'));
0 голосов
/ 04 июля 2018

Поскольку вы передаете метод with('variableName', $variable'), вы можете использовать $variableName переменную

Измените свой контроллер

 return view('posts.index')-> with('posts', $posts);

И просмотр

@if(count($posts) > 1)

Или вы можете изменить свой контроллер

 return view('posts.index')-> with('post', $posts);

И просмотр

@if(count($post) > 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...