无法将变量从控制器传递到下拉菜单

时间:2018-11-11 06:22:32

标签: laravel laravel-blade laravel-5.7 laravelcollective

我正在尝试从称为解决方案的表中获取数据,并在名为产品的表单的下拉列表中查看解决方案名称。

我已经在App / Providers中创建了一个名为DynamicDropdown的提供程序。

<?php

namespace App\Providers;

use App\Dropdown;
use Illuminate\Support\ServiceProvider;

class DynamicDropdown extends ServiceProvider
{
    public function boot()
    {
        view()->composer('*', function ($view) {
            $view->with('product_array', Dropdown::all());
        });
    }
}

控制器

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Providers\DynamicDropdown;
use App\Product;
use Illuminate\Http\Request;

class ProductsController extends Controller
{
    public function index(Request $request)
    {
        $select = [];
        foreach ($view as $data) {
            $select [$data->id] = $data->solutionname;
        }

        return view('products.products', compact('select'));
    }
}

我在视图中调用了选择变量,但不幸的是,我收到了一个未定义的变量错误。

刀片

<div class="form-group <?php echo e($errors->has('solution') ? 'has-error' : ''); ?>">
    <?php echo Form::label('solution', 'Solution', ['class' => 'control-label']); ?>
    <?php echo Form::select('solution', $select, null,
        ('' == 'required') ? ['class' => 'form-control', 'required' => 'required'] : ['class' => 'form-control']); ?>
    <?php echo $errors->first('solution', '<p class="help-block">:message</p>'); ?>
</div>

错误消息是...

  出现

ErrorException,并显示消息“未定义变量:选择(查看:   E:\ Laravel \ IBMint \ resources \ views \ products \ products \ form.blade.php)

我尝试了多种方法来修复它。但是仍然找不到解决方案。感谢有人可以提供帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

这是因为您实际上是在以错误的格式调用$ select变量。您返回视图

  return view('products.products', compact('select'));

这意味着在视图文件夹下的产品文件夹中获得视图 products.blade.php 然后根据错误将$ select变量放在 form.blade.php 上。

修复后,您将像这样返回视图form.blade.php。

 return view('products.products.form', compact('select'));