[英]Laravel dynamic dropdown fetching data issues
I want to list down the users according to the user_types while inserting so I created the two tables and each table has connections.我想在插入时根据 user_types 列出用户,所以我创建了两个表,每个表都有连接。 Each model PHP file has a relationship function.
每个 model PHP 文件都有一个关系 function。 and I created the jquery code and I created the controller function but it's not working I don't know where I making the mistake please help me to fix this problem.
我创建了 jquery 代码并创建了 controller function 但它不起作用我不知道我在哪里犯了这个错误请帮帮我。 I attached all code I have written and the database also.
我附上了我写的所有代码和数据库。
User Type Database用户类型数据库
User Database Table用户数据库表
UserType Id and User Table usty_id has connections UserType Id 和 User Table usty_id 有连接
UserType Model用户类型 Model
<?php
namespace Asset_Management_System;
use Illuminate\Database\Eloquent\Model;
class UserType extends Model
{
public function userpermission()
{
return $this->hasMany('Asset_Management_System\UserPermission');
}
public function user()
{
return $this->hasMany('Asset_Management_System\User');
}
}
User Model用户 Model
class User extends Authenticatable
{
public function usertype()
{
return $this->belongsTo('Asset_Management_System\UserType','usty_id');
}
}
Insert Form插入表格
<div class="form-group">
<label>User Type</label>
<select class="form-control select2" style="width: 100%;" id="ust_id" name="ust_id">
<option selected="selected">Select User Type</option>
@foreach($UserType as $ust)
<option value="{{$ust->id}}">{{$ust->usty_name}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label>User</label>
<select class="form-control select2" style="width: 100%;" id="user_id" name="user_id">
<option selected="selected">Select User</option>
@foreach($User as $us)
<option value="{{$us->id}}">{{$us->us_fname}} {{$us->us_lname}}</option>
@endforeach
</select>
</div>
Controller Controller
public function show(Request $request)
{
//echo $id;
if (!$request->usty_id) {
$html = '<option value="">'.trans('global.pleaseSelect').'</option>';
} else {
$html = '';
$user = User::where('usty_id', $request->usty_id)->get();
foreach ($user as $us) {
$html .= '<option value="'.$us->id.'">'.$us->us_fname.' '.$us->us_lname.'</option>';
}
}
return response()->json(['html' => $html]);
}
And Jquery和 Jquery
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$("#ust_id").change(function(){
$.ajax({
url: "{{ route('WorkRequest.show') }}?usty_id=" + $(this).val(),
method: 'GET',
success: function(data) {
$('#user_id').html(data.html);
}
});
});
</script>
Route路线
Route::get('WorkRequest/show', 'WorkRequestController@show')->name('WorkRequest/show');
And this is the error I'm getting when I go to the form这是我在 go 到表格时遇到的错误
Missing required parameters for [Route: WorkRequest.show] [URI: WorkRequest/{WorkRequest}]. [Route: WorkRequest.show] [URI: WorkRequest/{WorkRequest}] 缺少必需的参数。 (View: C:\xampp\htdocs\Asset_Management_Laravel\resources\views\layouts\main.blade.php)
(查看:C:\xampp\htdocs\Asset_Management_Laravel\resources\views\layouts\main.blade.php)
Please Help me to solve this issues请帮我解决这个问题
Replace above Route with this- Route::post('workRequest/get_options','WorkRequestController@getOptions')->name('workRequest.options');
将上面的 Route 替换为 -
Route::post('workRequest/get_options','WorkRequestController@getOptions')->name('workRequest.options');
and place above the route::resource() route并放在 route::resource() 路线上方
And ajax code as below ajax代码如下
$("#ust_id").change(function(){
let parameter = {'usty_id': $(this).val()};
$.ajax({
url: "{{ route('workRequest.options') }}",
method: 'POST',
data: parameter,
success: function(data) {
$('#user_id').html(data.html);
}
});
});
Add this Controller method to get options添加此 Controller 方法以获取选项
public function getOptions(Request $request)
{
if (!$request->usty_id) {
$html = '<option value="">'.trans('global.pleaseSelect').'</option>';
} else {
$html = '';
$user = User::where('usty_id', $request->usty_id)->get();
foreach ($user as $us) {
$html .= '<option value="'.$us->id.'">'.$us->us_fname.' '.$us->us_lname.'</option>';
}
}
return response()->json(['html' => $html]);
}
This Code is working perfectly此代码运行良好
<script type="text/javascript">
$(document).ready(function(){
// Department Change
$('#ust_id').change(function(){
// Department id
var id = $(this).val();
// Empty the dropdown
$('#user_id').find('option').not(':first').remove();
// AJAX request
$.ajax({
url: "{{ route('WorkRequest/show') }}?usty_id=" + id,
type: 'get',
dataType: 'json',
success: function(response){
//alert(response);
$('#user_id').html(response.html);
}
});
});
});
</script>
public function show(Request $request)
{
//echo $id;
$html = '';
$user = User::where('usty_id', $request->usty_id)->get();
foreach ($user as $us)
{
$html .= '<option value="'.$us->id.'">'.$us->us_fname.' '.$us->us_lname.'</option>';
}
return response()->json(['html' => $html]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.