繁体   English   中英

Blade Laravel 中的未定义变量

[英]Undefined Variable in Blade Laravel

我的控制器中有这个:

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();
    return view('detail', ['data_api' => $data]);
    return view('detail', ['data_carousel' => $carousel]);
}

但是当我尝试 echo-ing, $carousel by {{ $carousel }} ,它说没有找到。 但是$data工作得很好。 任何的想法?

未定义变量:carousel(查看:/mylaravelproject/resources/views/detail.blade.php)

您需要将双返回语句更改为单返回

return view('detail', ['data_api' => $data]);
return view('detail', ['data_carousel' => $carousel]);

return view('detail', ['data_api' => $data, 'data_carousel' => $carousel]);

您返回视图两次,这就是为什么视图中只有$data_api可用,

尝试这个

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();

    return view('detail', ['data_api' => $data, 'data_carousel' => $carousel]);

}

更新:

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();
    return view('detail', ['data_carousel' => $carousel,'data_api' => $data]);
}

您正在从同一个控制器返回两个视图。 第一次return后,代码停止执行,不会return第二个视图。 这就是为什么您无法获得第二个视图参数的原因

你不能从一个函数返回两次并期望两者都实际返回一些东西。 在第一次return ,函数的执行就会停止。

尝试同时返回两个变量:

return view('detail', [
    'data_api' => $api,
    'data_carousel' => $carousel
]);

用以下代码替换您的代码:

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();
    return view('detail')->with('data_api', $data)->with('data_carousel', $carousel);
}

您需要返回如下视图

public function detail($id) {
    $data = DB::table('data_api')->where('id', $id)->get();
    $carousel = DB::table('data_carousel')->where('data_api_id', $id)->get();
    return view('detail', compact('data','carousel'));
}

现在真的有效吗? 你告诉我们你得到

Undefined variable: carousel (View: /mylaravelproject/resources/views/detail.blade.php)

你会得到它,因为你没有将变量 carousel 传递给你的视图,你将变量命名为data_apidata_carousell

其次,您应该只在一个句子中将变量作为关联数组传递,而不是像这样的两个视图调用

return view('detail', ['carousel' => $carousel,'data' => $data]);

在我的情况下,我使用

@if(isset($users))

在我的 foreach 像这个例子之前:

                <div class="form-group" id="boardAdminUserIdCon">
                    <p><span class="glyphicon glyphicon-briefcase" aria-hidden="true"></span> مدیر بورد</p>
                    <select name="boardAdminUserId" id="boardAdminUserId" class="form-control" required="required">
                        <option value="">{{ __('auth.CHOOSEYOURADMIN') }}...</option>
                             @if(isset($users))
                                  @foreach($users as $user)
                                        <option value="{{ $user['id'] }}">{{ $user["name"] }} 
                                        </option>
                                  @endforeach
                             @endif
                    </select>
                </div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM