【问题标题】:Undefined variable in view - Laravel视图中未定义的变量 - Laravel
【发布时间】:2019-02-10 19:00:55
【问题描述】:

我正在尝试从 Laravel 的数据库中获取用户列表,但查看 无法识别来自控制器的变量。表中的名称 DB 是 korisnik。

模型.php

<?php
namespace App\Models;
use Illuminate\Support\Facades\DB;
class model {  
 public function dohvatiKorisnike() {
   return DB::table('korisnik')->get();
 }
}

KontrolerProba.php

<?php

namespace App\Http\Controllers;
use App\Models\model;

class KontrolerProba {
 public function index(){
   $korisnik = new model();
   $korisniciUpit = $korisnik->dohvatiKorisnike();
   $podaci = array();
   $podaci['korisnik'] = $korisniciUpit;

   return view('welcome', $podaci);
 }
}

welcome.blade.php

@foreach($korisnici as $korisnik)
 <p{{ $korisnik->korisnicko_ime }} </p>
@endforeach

未定义变量:korisnici(查看: C:\wamp64\www\test\resources\views\welcome.blade.php)

【问题讨论】:

  • 好吧,您发送的是podaci,所以您必须打印$podaci 变量,只需在刀片模板中使用@php(dump($podaci)) 尝试一下
  • 我得到未定义的变量podaci错误..
  • 然后试试这个return view('welcome', compact('podaci'));不要忘记extends Controller
  • 你使用了错误的变量名,请检查一下。

标签: php laravel


【解决方案1】:

通过两种方法在视图中传递控制器数据:

  1. 使用compact
  2. 使用with()方法
 $data['korisnik'] = $korisniciUpit;     
 return view('welcome')->with($data);

然后像$korisnik-&gt;column_name一样在视图中访问

希望它会起作用。

【讨论】:

    【解决方案2】:

    我认为您使用了错误的变量。

    试试看:

    @foreach($korisnik as $value)
     <p> {{ $value->korisnicko_ime }} </p>
    @endforeach
    

    【讨论】:

      【解决方案3】:

      问题是。您正在传递 korisnik 并尝试使用 korisnici 获取数据

      试试这个

      <?php
      
      namespace App\Http\Controllers;
      use Illuminate\Support\Facades\DB;
      
      class KontrolerProba {
       public function index(){
       $korisniciUpit = DB::table('korisnik')->get();
       $data['korisnik'] = $korisniciUpit;
       return view('welcome', $data);
       }
      }
      

      在你的Welcome.blade.php

      @foreach($korisnik as $value)
         <p{{ $value->korisnicko_ime }} </p>
      @endforeach
      

      【讨论】:

      • 你申请了吗,我的回答是!
      • 我需要将模型和控制器分开,我不能在同一个文件中使用它们。
      • 你为这张桌子创建了一个模型korisnik
      • @user3047285 你为这张桌子创建模型了吗 korisnik !
      • 嗯,是的,我想我有?
      【解决方案4】:

      让我们按照控制步骤;

      1-) 您确定查询返回的数据不为空吗?
      2-) laravel 以对象形式返回查询,为了避免混淆,我建议您在填充之前创建一个空对象。所以让我们稍微修改一下代码。

      $podaci = (object)null;
      $podaci->korisnik = $korisniciUpit;
      

      Laravel 还提供了在视图中更改变量名...一段时间后,您会遇到更改所有变量和混乱的问题。

      return view('welcome')->with(['data' => $podaci]);
      

      要测试您的传递变量,请检查您的视图;

      var_dump($data);
      

      希望对你有帮助:)

      【讨论】:

      • 我尝试过使用空对象和返回视图('welcome')->with(['data' => $podaci]);我得到了同样的错误:(你能试试吗?谢谢。
      • 这个例子已经应用到很多项目中了,所以它肯定是有效的。请检查所有参数是否包含某些值。如果不是;
        $podaci->korisnik = "你好";调试它。
      猜你喜欢
      • 2018-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多