Laravel $请求值为空

时间:2018-06-11 08:40:23

标签: laravel

我想在下拉菜单中选择公司,它会向您显示该公司的所有者但是当我从我的控制器中的blade.php请求数据时,我得到NULL。 这是我的blade.php

<form>
        <label>Company:</label>
        <select id="test" name="test" class="form-control input-sm"> 
            @foreach($companies as $company)
                <option value="{{$company->id}}">{{$company->name}}</option>
            @endforeach
        </select>
    </form>

这是我的控制器

public function index(Request $request)
    {       
        $companies = Company::all();
        $company_id = $request->get('company'); 
        $owners = Owner::where('company_id',$company_id)->get();  
    return view ('owners', compact('owners','companies'));
    }

并且它没有显示任何用户,但是如果我像这样手动输入任何数字

$company_id = 1; 

然后它显示ID为1的公司的所有者。

更新2

我的表单现在看起来像这样

<form action="{{ action('OwnerController@index') method="get"}}">

我的路线就是这个

Route::get('owners', 'OwnerController@index');

它仍然相同。

3 个答案:

答案 0 :(得分:0)

不确定你想要什么。但这里有适合你的东西。

File =&gt; create.blade.php

<form action='/item' method='POST'>
    <label>Item Name:</label>
    <input type="text" name="name" class="form-control input-sm">

    <label>Company:</label>
    <select id="company" name="company" class="form-control input-sm"> 
        @foreach($companies as $company)
            <option value="{{ $company->id }}">{{ $company->name }}</option>
        @endforeach
    </select>
    <button class="btn btn-primary">Create</button>
</form>

File =&gt; ItemController.php

public function store(Request $request)
{
    try {

        $this->validate($request, [
            'company_id' => 'required',
            'name' => 'required|unique:items,name'
        ]);

        $obj = new Item();
        $obj->company_id = $request->input('company_id');
        $obj->name = $request->input('name');
        $obj->save();

        return redirect()->route('item.index')
            ->with('success', 'Create Successful');

    } catch (\Exception $ex) {

        Log::error($ex->getMessage());

        return redirect()->route('item.create')
            ->with('fail', $ex->getMessage());

    }
}

答案 1 :(得分:0)

你不需要一张表格来填写你的下拉列表; 你在公司和老板之间的模型中创建了一个关系,你甚至不需要在哪里,只需像这样使用雄辩的

$owners = Owner::get();

然后在您看来,只需使用雄辩的公司:

$owner->company->name;

就是这样!

答案 2 :(得分:0)

正如我之前所说,我错过了一些剧本。这解决了我的问题。

<form method="get" id="company_change">
        <label for="company">Company:</label>
        <select id="company" name="company" onchange="document.getElementById('company_change').submit()"> 
        <option value="">----Select Company-----</option>
            @foreach($companies as $company)
                <option value="{{$company->id}}">{{$company->name}}</option>
            @endforeach
        </select>
    </form>

我的路线是

Route::resource('owners', 'OwnerController');