TheCodingKid
TheCodingKid

Reputation: 115

laravel: data to be displayed on page using drop down list

I am implementing a drop down menu list to display a list of hotels from my system. I currently have the following code which when i click submit, nothing is happening (no data displayed).

Does anyone know how i can potentially display data once i press submit ?

The output of this is currently showing the hotel id in the URL E.G (http...search?title=3) showing that it is partly working, however i do i manage to display it on my page ?

Search.blade.php

@extends ('layouts.app')
@section('content')  

{!! Form::open(['action' => 'SearchController@index', 'method' => 'GET']) !!}
<div class="form-group">
    <select name="distance" id="distance" class="form-control input-lg dynamic" data-dependent="state">
        <option value="">Choose an item</option>
        @foreach($posts as $post)
            <option value="{{ $post->id }}">{{ $post->distance }}</option>
        @endforeach
    </select>
</div>
<div class="form-group">
    {{ Form::Submit('submit', ['class' => 'btn btn-primary']) }}
</div>
@if($request)

                <p>{{ $request->title }}</p>
                <p>{{ $request->distance }}</p>
                <img src="{{$request->image}}" height = 200 width =200>

    @endif


SearchController.php


   public function index(Request $request)
   {
       $posts = Post::all();

       $selectedPost = $request->has('distance')
           ? Post::find($request->distance)
           : null;

       return view('Pages.search', [
           'posts' => $posts,
           'request' => $selectedPost
       ]);
   }

   public function store(Request $request)
   {
       // This will return all request data to your screen.
       return $request->all();
       return view('Pages.search');
   }


Upvotes: 0

Views: 358

Answers (1)

MaartenDev
MaartenDev

Reputation: 5792

Logic to retrieve data should be placed inside the controller, the view only shows the data.

search.blade.php

{!! Form::open(['action' => 'SearchController@index', 'method' => 'GET']) !!}
<div class="form-group">
    <select name="post_id" id="title" class="form-control input-lg dynamic" data-dependent="state">
        <option value="">Choose an item</option>
        @foreach($posts as $post)
            <option value="{{ $post->id }}">{{ $post->title }}</option>
        @endforeach
    </select>
</div>
<div class="form-group">
    {{ Form::Submit('submit', ['class' => 'btn btn-primary']) }}
</div>

@if($post)
    <div class="table">
        <table>
            <tr>
                <th>Hotel name</th>
                <td>{{ $post->title }}</td>
                <th>Distance</th>
                <td>{{ $post->distance }}</td>
                <th>Images</th>
                <td>{{ $post->image }}</td>
            </tr>
        </table>
    </div>
@endif 

App/Http/Controller/SearchController.php

namespace App\Http\Controllers;

use App\Post;
use Illuminate\Http\Request;

class SearchController extends Controller {

    public function index(Request $request)
    {
        $posts = Post::all();

        $selectedPost = $request->has('post_id')
            ? Post::find($request->post_id)
            : null;

        return view('Pages.search', [
            'posts' => $posts,
            'post' => $selectedPost
        ]);
    }

    public function store(Request $request)
    {
        // This will return all request data to your screen.
        return $request->all();
        return view('Pages.search');
    }
}

Upvotes: 1

Related Questions