首页 > 解决方案 > 在 Laravel 中使用不同的控制器获取同一行

问题描述

我有 MapController 和 PagesController。从 DB 获取地址行到 MapController 并将其传递给 home.view 所以在谷歌地图中使用它。但也在 PagesController 中,我也在获取所有行,包括地址行。并在同一个视图上传递它。但是当我这样做的时候。弹出未定义的 var 错误。

这是控制器和视图。

页面控制器

public function search(Request $request)
{
    $q = $request->q;

    $estates = \DB::table('allestates')
        ->where("building_name", "LIKE", "%" . $q . "%")
        ->orWhere("address", "LIKE", "%" . $q . "%")
        ->orWhere("company_name", "LIKE", "%" . $q . "%")
        ->orWhere("region", "LIKE", "%" . $q . "%")
        ->orderBy('price')->paginate(5);

    return view("home", compact('estates', 'q'));

} 

查看

 @foreach($estates as $estate)
            <div class="row" id="main-wrapper">
                <div class="col-sm">
                    <img src=" https://dummyimage.com/150x150/000/fff" alt="" class="img-radius">
                </div>
                <div class="col-6">
                    <h3>{{$estate->building_name}}</h3>
                    <p>
                        <br>
                        {{str_limit($estate->address, $limit = 80)}}
                        <br>
                        {{ $estate->price }}
                        <br>
                        {{ $estate->rooms }}
                        <br>
                        {{ $estate->extend }}
                        <br>
                    </p>
                </div>
                <div class="col-sm">
                  <button class="detail-btn">物件概要</button>
                </div>
                <hr style="width: 100%; margin:10px; border-color: #34495e;">
            </div>
@endforeach

地图控制器

$adres = DB::table("allestates")
        ->get();

    return view("home", compact('adres'));

看法

function initMap(){
        var options = {
            zoom:8,
            center:
                '{!! $adres[0]->address !!}'
        }

        var map = new google.maps.Map(document.getElementById("map"), options);

        var marker = new google.maps.Marker({
            position:
                    @foreach($adres as $addr)
                        '{!! $addr->address !!}',
                    @endforeach
            map:map
        });

        var infoWindow = new google.maps.InfoWindow({
            content:'content here'
        });

        marker.addListener('click', function () {
            infoWindow.open(map, marker);
        })
    }

顺便说一句,在我放入 PagesController 之前没有错误。我怎样才能做到这一点?向我显示 MapController 的错误?

未定义变量:adres(查看:/var/www/html/laravel/resources/views/layouts/app.blade.php)(查看:/var/www/html/laravel/resources/views/layouts/app.blade. php)

标签: phplaravel

解决方案


感谢您回答我,但我几乎没有接触就解决了这个问题。只是在两个控制器中给出了相同的 $var 。


推荐阅读