laravel中帖子的index.php中的未定义变量

时间:2017-11-01 13:54:22

标签: laravel variables undefined

我的错误: 未定义的变量:asd(查看:C:\ xampp \ htdocs \ kproject \ resources \ views \ posts \ index.blade.php)

控制器:

use App\post;
public function index()
    {
          $asd = post::all();
        return view ('posts.index')->with('post','$asd');
    }

Index.blade.php

@extends('layout.app')


@section('content')
    <h1> Peoples</h1>
    <hr>
   @if(count($asd)>0)
    @foreach($asd as $post)

<p> {{$post->username}}  </p>

    @endforeach

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



@endsection

我不知道为什么会收到此错误,请提供帮助!

5 个答案:

答案 0 :(得分:4)

您正在将$asd变量传递给视图...但名称不同。视图中的名称为$post

->with('post', $asd) ...传递$ asd变量进行查看并将其分配给$ post

将index.blade.php更改为:

@extends('layout.app')

@section('content')
<h1> Peoples</h1>
<hr>
@if(count($post)>0)
    @foreach($post as $p)

    <p> {{$p->username}}  </p>

@endforeach

@else
    <p> No Posts  </p>
@endif
@endsection

答案 1 :(得分:0)

您可以通过2种方法将数据传递给Laravel视图。

1使用->with()方法。

您的控制器方法

namespace App\Http\Controllers;

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

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

}

2您可以将数组传递给view()方法的第二个参数。

namespace App\Http\Controllers;

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

class PostController extends Controller
{
    public function index()
    {
        $post_data= post::all();
        $post_data = ['post' => $post_data]
        return view('posts.index')->with('post',$post_data);
    }  

}

您可以通过以下

Index.blade.php中访问它
{{$post}}

答案 2 :(得分:0)

由于我是laravel的新手,我有时会感到有些困惑,但我不了解整个过程。

首先,我从$ asd中删除了引号,但我已经传递了相同的变量来查看。

如上所述@Bostjan,我想知道这个过程,任何人都可以向我澄清这个

  

您正在将$ asd变量传递给view ...但名称不同。   视图中的名称将是

 $post->with('post', $asd)
  

...传递$ asd变量来查看并将其分配给$ post

答案 3 :(得分:0)

"This sentence is great amazing even yeah whatever screw grammar"

卸下上方短划线
  

将其更改为您的控制器

'$asd'

use App\post;
public function index()
{
      $asd = post::all();
    return view ('posts.index')->with('post','$asd');
}

分配$ asd varible发布然后在视图中你必须迭代post varible而不是$ asd,

  

在index.blade.php中,

use App\post;
public function index()
{
    $asd = post::all();
    return view ('posts.index')->with('post',$asd);
}

将其更改为,

@extends('layout.app')
@section('content')
   <h1> Peoples</h1>
   <hr>
@if(count($asd)>0)
@foreach($asd as $post)
<p> {{$post->username}}  </p>
@endforeach
@else
 <p> No Posts  </p>
@endif
@endsection

答案 4 :(得分:0)

我发现了这个问题。 您在 index 函数中发送 posts 变量。

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

但是当您想创建新帖子时,很可能会遇到此错误,因此这里执行了 store 函数index 函数 不在控制器中执行,因为 store 函数负责存储表单信息。然后你编辑这个函数如下。

public function store(Request $request) {
    $post = new Post();
    $post->title = $request->input("title");
    $post->description = $request->input("description");
    $post->save();


    $posts = Post::all(); //Send posts in compact
    return view("posts.index", compact($posts));
}

请原谅我打字的问题,我会说波斯语❤