如何在 laravel 的下拉选项字段中显示值?

Posted

技术标签:

【中文标题】如何在 laravel 的下拉选项字段中显示值?【英文标题】:How to show value in a dropdown option field in laravel? 【发布时间】:2019-01-01 20:16:58 【问题描述】:

我有 3 个表 hosts visitorsvisitor_types。我想在下拉选项按钮中显示 host namevisitor type。但我对 controllerroute 代码有点困惑。我编写了下面给出的代码代码,但它显示 -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_idvType_idhost 和visitor_types 表的外键。 那么如何在下拉按钮中显示来自另一个表的 Name

【问题讨论】:

我认为你的错误在那里:@foreach($host as $host) 相同的变量名 但我使用@foreach($host as $host) 显示主机表值。没问题。 现在我更改了变量名,但它显示相同的错误。 您有一些拼写错误: 1. 您的@endforeach 在标记> 之外结束,因此项目将无法正确显示。 2. 您的路线中可能有错字:/vsistor 2. 正如@Ts8060 所说,您的 foreach 数组的命名必须与数组的键/值不同,例如 $hosts as $host 并且 $visitor->name 打印为字符串...但我找不到 $host 未定义的原因。可能你的分享码和你本地的不一样 【参考方案1】:

公共函数索引()

$visitor = Visitor::all();
$hosts = Host::all();
$visitorType = VisitorType::all();
return view('admin\visitor', compact('hosts','visitorType','visitor'));

【讨论】:

【参考方案2】:

有两个错误。

1) 您将 $host 变量发送到视图,但您在视图中的 foreach 循环中用作 $hosts。 你可以这样设置你的代码

$hosts = host::all();
return view('admin\visitor', compact('hosts'));

2) 您必须使用 在视图上打印变量。

<option value=" $host->name "> $host->name</option>

Ps:实际上模型名必须以大写开头(host::all() -> Host::all())

【讨论】:

我重命名了模型名称和模型类,但还是同样的错误。 $hosts = Host::all(); return view('admin\visitor', compact('hosts')); 您是否更改了选项标签的值属性?您没有写方括号 (value="$host->name") 但这必须是 value=" $host->name " @Md.AbuZaman

以上是关于如何在 laravel 的下拉选项字段中显示值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用zend框架2在更改下拉值时在输入字段内显示值

如何在 Laravel 中制作简单的动态下拉列表?

Woocommerce - 将属性值显示为下拉字段

如何使用 Laravel 在下拉列表中显示数据库中的选定值?

Suitescript 2.0-如何显示字段并基于下拉菜单更新值?

当用户使用 ajax 在 laravel 中选择任何下拉值时,如何立即显示数据库详细信息?