Как отобразить значение данных в соответствии с выпадающим списком в laravel? - PullRequest
0 голосов
/ 07 апреля 2020

В моей базе данных есть таблица, в которой есть поле lis_type, и у этого поля есть 2 значения: sale и rent, и я вызываю данные на странице просмотра. Давайте предположим, что я нажимаю на страницу продажи, там должно отображаться только sale similar listing. Если я нажму Rent, то rent будет показано для *1007*. Тем не менее, сейчас оба списка объединяются. Пожалуйста, дайте мне руководство, где я делаю ошибку.

Контроллер

public function listingshownow(Request $r, $slug)
{
    $listview = Listing::where('slug', $slug)->first();
    $products = Listing::where('propId', $listview->propId)
        ->where(function ($query) {
            $query->where('lis_type', '=', 'sale')->orWhere('lis_type', '=', 'rent');
        })->get();

    return view('listings-view', compact('products'));
}

Просмотреть похожие объявления ...

@foreach($products as $prod)
    @if($prod->lis_type === 'sale')
        <div class="row featured portfolio-items">
            <div class="col-lg-7 col-md-12 homes-content pb-0 mb-44">
                <ul class="homes-list clearfix">
                    <li>
                        <i class="fa fa-bed" aria-hidden="true"></i>
                        <span>{{$prod->ls_fs}}</span>
                    </li>
                    <li>
                        <i class="fa fa-bath" aria-hidden="true"></i>
                        <span>{{$prod->bathroom}} Bathroom</span>
                    </li>
                </ul>
            </div>
        </div>
    @endif
@endforeach

1 Ответ

0 голосов
/ 08 апреля 2020

Вам нужно передать переменную вашему контроллеру, чтобы указать, какую страницу вы просматриваете, чтобы вы могли использовать ее в своем запросе / фильтре.

Например, допустим, URL вашей страницы продаж выглядит как http://example.com/listings/sales. Тогда вы можете настроить маршрут как:

Route::get('listings/{type}', 'ListingsController@show');

Теперь ваш ListingsController может иметь такой метод:

// The $type parameter will be what was matched in the route
public function show($type) {
    $listings = Listings::where('lis_type', $type)->get();
    return view('listings-view', ['listings' => $listings]);
}

Возможно, вы захотите проверить, что $type соответствует только ценности, которые вы ожидаете. Вы можете сделать это в контроллере, например:

// At the top of show()
if ($type !== 'sales' && $type !== 'rent') {
    abort(404);
}

Или вы можете ограничить его в своем маршруте, указав, что {type} там должен соответствовать некоторому шаблону:

Route::get('listings/{type}', 'ListingsController@show')->where('type', 'sales|rent');

Все это описано в Laravel документах по маршрутизации , я предлагаю прочитать их, а еще лучше - потратьте несколько минут и просмотрите все документы! 30-минутный скимминг даст вам общее представление о том, как все работает, и знание того, где искать и читать больше, когда вам нужен ответ на вопрос.

...