Laravel ErrorException,执行多个动态下拉
Laravel ErrorException, Performing Multiple dynamic drop down
我有四个 table:
asset_category
table(列'asset_category_id'
,'category'
),一个assets
table(列 'asset_id'
、'asset_category_id'
、'manufacturer_id'
、'department_id'
),
manufacturers
table(第 manufacturers_id
、manufacturer
列)和 departments
table(第 department_id
、department
列)。 asset
table 列与其他三个 table 列链接。我在表单中执行动态下拉以插入 asset
table
Asset.blade.php
<form action="{{url('/insertAsset')}}" method="POST" edata-parsley-validate novalidate>
{{ csrf_field() }}
<div class="form-group">
<label for="userName">Asset ID*</label>
<input type="text" name="asset_id" parsley-trigger="change" required placeholder="Asset ID" class="form-control" id="userName" disabled>
</div>
<div class="form-group">
<label for="userName">Asset Category ID*</label>
<select name="asset_category_id" parsley-trigger="change" required placeholder="Asset Category ID" class="form-control">
<option>Select an Asset Category</option>
@foreach( $asset_categories as $asset_category )
<option value=" {{$asset_category->asset_category_id}}"> {{ $asset_category->category }} </option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="userName">Asset Manufacture ID*</label>
<select name="manufacturer_id" parsley-trigger="change" required class="form-control">
<option>Select a Manufacturer</option>
@foreach( $manufacturers as $manufacturer )
<option value=" {{$manufacturer->manufacturer_id}}"> {{ $manufacturer->manufacturer }} </option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="userName">Department ID*</label>
<select name="department_id" parsley-trigger="change" required placeholder="Department ID" class="form-control" >
<option>Select a Department</option>
@foreach( $departments as $department )
<option value=" {{$department->department_id}}"> {{ $department->department }} </option>
@endforeach
</select>
</div>
<div class="form-group text-right m-b-0">
<button class="btn btn-primary waves-effect waves-light" type="submit">
Submit
</button>
</div>
资产控制器
<?php
namespace App\Http\Controllers;
use App\Asset;
use App\Asset_category;
use App\Manufacturer;
use App\Department;
use Illuminate\Http\Request;
class AssetController extends Controller
{
public function asset_category(){
$asset_categories = Asset_category::all();
return view('asset', ['asset_categories' => $asset_categories]);
}
public function manufacturer(){
$manufacturers = Manufacturer::all();
return view('asset', ['manufacturers' => $manufacturers]);
}
public function department(){
$departments = Department::all();
return view('asset', ['departments' => $departments]);
}
}
Web.php
<?php
Route::get('/asset', function (){
return view('asset');
} );
Route::get('/asset', 'AssetController@asset_category');
Route::get('/asset', 'AssetController@department');
Route::get('/asset', 'AssetController@manufacturer');
/*POST */
Route::post('/insertAsset', 'AssetController@add');
当 运行 应用程序时,我得到一个 ErrorException
声明:
Undefined variable: asset_categories (View: C:\xampp\htdocs\laravel_app\resources\views\asset.blade.php).
经过全面测试后我发现,只显示一个下拉菜单,因为 laravel 仅路由来自 web.php
中 3 个函数中的一个函数的一个变量,而另外两个变量来自其他函数没有发送到asset.blade.php
。所以现在我想要一种将其他变量路由到 asset.blade.php 的方法。明白的请帮忙看看。提前致谢。
- 首先,Laravel只会匹配第一个具有特定ID和特定类型的路由。在这些情况下只会找到第一条路线
GET /asset
.
做你想做的事。您只需要创建一个方法,它将 return 三个变量添加到视图
public function asset(){
$asset_categories = Asset_category::all();
$manufacturers = Manufacturer::all();
$departments = Department::all();
return view('asset', ['asset_categories' => $asset_categories,
'manufacturers' => $manufacturers, 'departments' => $departments]);
}
而且只有一条路线
Route::get('/asset', 'AssetController@asset');
我有四个 table:
asset_category
table(列'asset_category_id'
,'category'
),一个assets
table(列 'asset_id'
、'asset_category_id'
、'manufacturer_id'
、'department_id'
),
manufacturers
table(第 manufacturers_id
、manufacturer
列)和 departments
table(第 department_id
、department
列)。 asset
table 列与其他三个 table 列链接。我在表单中执行动态下拉以插入 asset
table
Asset.blade.php
<form action="{{url('/insertAsset')}}" method="POST" edata-parsley-validate novalidate>
{{ csrf_field() }}
<div class="form-group">
<label for="userName">Asset ID*</label>
<input type="text" name="asset_id" parsley-trigger="change" required placeholder="Asset ID" class="form-control" id="userName" disabled>
</div>
<div class="form-group">
<label for="userName">Asset Category ID*</label>
<select name="asset_category_id" parsley-trigger="change" required placeholder="Asset Category ID" class="form-control">
<option>Select an Asset Category</option>
@foreach( $asset_categories as $asset_category )
<option value=" {{$asset_category->asset_category_id}}"> {{ $asset_category->category }} </option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="userName">Asset Manufacture ID*</label>
<select name="manufacturer_id" parsley-trigger="change" required class="form-control">
<option>Select a Manufacturer</option>
@foreach( $manufacturers as $manufacturer )
<option value=" {{$manufacturer->manufacturer_id}}"> {{ $manufacturer->manufacturer }} </option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="userName">Department ID*</label>
<select name="department_id" parsley-trigger="change" required placeholder="Department ID" class="form-control" >
<option>Select a Department</option>
@foreach( $departments as $department )
<option value=" {{$department->department_id}}"> {{ $department->department }} </option>
@endforeach
</select>
</div>
<div class="form-group text-right m-b-0">
<button class="btn btn-primary waves-effect waves-light" type="submit">
Submit
</button>
</div>
资产控制器
<?php
namespace App\Http\Controllers;
use App\Asset;
use App\Asset_category;
use App\Manufacturer;
use App\Department;
use Illuminate\Http\Request;
class AssetController extends Controller
{
public function asset_category(){
$asset_categories = Asset_category::all();
return view('asset', ['asset_categories' => $asset_categories]);
}
public function manufacturer(){
$manufacturers = Manufacturer::all();
return view('asset', ['manufacturers' => $manufacturers]);
}
public function department(){
$departments = Department::all();
return view('asset', ['departments' => $departments]);
}
}
Web.php
<?php
Route::get('/asset', function (){
return view('asset');
} );
Route::get('/asset', 'AssetController@asset_category');
Route::get('/asset', 'AssetController@department');
Route::get('/asset', 'AssetController@manufacturer');
/*POST */
Route::post('/insertAsset', 'AssetController@add');
当 运行 应用程序时,我得到一个 ErrorException
声明:
Undefined variable: asset_categories (View: C:\xampp\htdocs\laravel_app\resources\views\asset.blade.php).
经过全面测试后我发现,只显示一个下拉菜单,因为 laravel 仅路由来自 web.php
中 3 个函数中的一个函数的一个变量,而另外两个变量来自其他函数没有发送到asset.blade.php
。所以现在我想要一种将其他变量路由到 asset.blade.php 的方法。明白的请帮忙看看。提前致谢。
- 首先,Laravel只会匹配第一个具有特定ID和特定类型的路由。在这些情况下只会找到第一条路线
GET /asset
. 做你想做的事。您只需要创建一个方法,它将 return 三个变量添加到视图
public function asset(){ $asset_categories = Asset_category::all(); $manufacturers = Manufacturer::all(); $departments = Department::all(); return view('asset', ['asset_categories' => $asset_categories, 'manufacturers' => $manufacturers, 'departments' => $departments]); }
而且只有一条路线
Route::get('/asset', 'AssetController@asset');