简体   繁体   English

Laravel 动态下拉获取数据问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM