Неопределенная переменная в представлении Laravel 5.6 - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь решить эту проблему и читаю много постов, но мне ничего не помогает, попробуйте выяснить мою проблему, так как я новичок в laravel!

это мой Index.blade.view, расположенный в view/posts

    <!DOCTYPE html>
<html>
<head>
    <title>Post</title>
</head>
<body>
<ul>
    <?php 
        foreach ($posts as $post) {
        echo "<li><a href = 'post/$post->$id'>".$post->$title."</a></li>";
        }
    ?>
</ul>
</body>
</html>

PostController:

<?php

namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
    public function index(){
        $posts = Post::all();
        return view('posts.index',compact($posts));
    }

    public function showPost($id){
        $post = Post::find($id);
        return view('posts.post',compact($post));
    }
}

Я прочитал много постов, связанных с этим, но ничего не помогло мне, что я делаю не так?Вот проблема, с которой я сталкиваюсь: Неопределенная переменная: posts (Просмотр: C: \ xampp \ htdocs \ firstApplication \ resources \ views \ posts \ index.blade.php)

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Предположим, у вас есть другая переменная, содержащая данные, тогда ваш метод индекса должен выглядеть следующим образом:

Доступ к содержимому $ post как $post->id вместо $post->$id

 public function index(){
     $posts = Post::all();
     $someData = []; // extra variable
     return view('posts.index',compact('posts','someData'));
 }

ДругойИзменения, которые необходимо внести, находятся в файле представления: примечание: вам не нужно использовать традиционные теги PHP и foreach, вместо этого вы можете использовать чистый и элегантный метод Laravel, например:

Замените свой блок кода.:

<?php 
   foreach ($posts as $post) {
      echo "<li><a href = 'post/$post->$id'>".$post->$title."</a></li>";
   }
?>

Обновленный код:

@foreach($posts as $post)
    <li><a href = "{{ url('post/'. $post->id) }}" </a></li>
@endforeach
0 голосов
/ 10 декабря 2018

Изменить вид на

</head>
<body>
<ul>
    <?php 
        foreach ($posts as $post) {
        echo "<li><a href = 'post/$post->id'>".$post->title."</a></li>";
        }
    ?>
</ul>
</body>
</html>

Изменить $post->$id на $post->id и $post->$title на $post->title Также compact($posts) на compact('posts') и compact($post) на compact('post')

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