【发布时间】:2019-01-01 20:16:58
【问题描述】:
我有 3 个表 hosts visitors 和 visitor_types。我想在下拉选项按钮中显示 host name 和 visitor type。但我对 controller 和 route 代码有点困惑。我编写了下面给出的代码代码,但它显示 -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');
在visitor 表中,host_id 和vType_id 是host 和visitor_types 表的外键。 那么如何在下拉按钮中显示来自另一个表的 Name?
【问题讨论】:
-
我认为你的错误在那里:@foreach($host as $host) 相同的变量名
-
但我使用@foreach($host as $host) 显示主机表值。没问题。
-
现在我更改了变量名,但它显示相同的错误。
-
您有一些拼写错误: 1. 您的@endforeach 在标记> 之外结束,因此项目将无法正确显示。 2. 您的路线中可能有错字:
/vsistor2. 正如@Ts8060 所说,您的 foreach 数组的命名必须与数组的键/值不同,例如$hosts as $host -
并且 $visitor->name 打印为字符串...但我找不到 $host 未定义的原因。可能你的分享码和你本地的不一样
标签: php html css laravel-5 bootstrap-4