Search code examples
phphtmlcsslaravel-5bootstrap-4

How to show value in a dropdown option field in laravel?


I have 3 table hosts visitors and visitor_types. I wand to show host name and visitor type in a drop down option button. But I am little bit confused about the controller and route code. I write the code code that is given below but it's show -Undefined variable: host (View: C:\laragon\www\ves\resources\views\admin\visitor.blade.php)

Controller Code: VisitorController.php


  <?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Visitor;
use App\Host;
use App\visitorType;
use App\visitors;
use App\hosts;
use App\visitorTypes;
use App\visitor_s;

class VisitorController extends Controller
{
    public function __construct(){
        $this->middleware("auth");
    }
    // View All Visitor
public function index() {

    $visitor = Visitor::all();
    return view('admin\visitor', compact('visitor'));
}
// Taking all host data
public function optionValue() {
    $hosts = Host::all();
    return view('admin\host', compact('hosts'));
}


    Model : Visitor.php
    <?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Visitor extends Model
{
//
public function hosts(){
    return $this->belongsTo('App\Host');
}
public function visitorTypes(){

    return $this->hasMany('App\VisitorType');
}
}

Model: Host.php




  <?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Host extends Model
{
//
public function visitors(){
    return $this->hasMany('App\Visitor');
}

}

View Code: visitor.blade.php

<select class="form-control input-medium" name="host">
  @foreach($hosts as $host)
   <option value="{{ $host->name }}">{{ $host->name}}</option>
  @endforeach

Route code: web.php
Route::get('/vsistor','VisitorController@optionValue')->name('optionValue');

In visitor table the host_id and vType_id is foreign key from host and visitor_types table. So how can I display Name that comes from another table in a drop down button?


Solution

  • public function index() {
        
        $visitor = Visitor::all();
        $hosts = Host::all();
        $visitorType = VisitorType::all();
        return view('admin\visitor', compact('hosts','visitorType','visitor'));
    }