代码之家  ›  专栏  ›  技术社区  ›  chagou2704

动态组合框返回“undefined”,而不是显示“technicien”的“nom”

  •  0
  • chagou2704  · 技术社区  · 6 年前

    我有下面的表格,有4个组合框“metier=profession”“tache=task”“tacification=pricing”和“technicien=technician”,当我选择技术人员,但当我在脚本上做ID时,它就工作了。

    enter image description here

    介入控制器

    <?php
    
     namespace App\Http\Controllers;
     use App\zoneintervention;
     use App\technicien;
     use App\Intervention;
     use App\metier;
     use App\tache;
     use App\client;
     use App\user;
     use App\adresse;
     use App\Tarification;
     use App\tarificationtache;
     use Illuminate\Http\Request;
     use App\Http\Requests\InterventionRequest;
     use DB;
     class InterventionController extends Controller
    {
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
     $Listintervention=Intervention::with(['technicien','client', 
     'tarificationtache'])->get();
    
        return view('intervention.index',['interventions'=>$Listintervention]);
    
    
    }
    
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    
    {
        $user=  user::orderBy('id', 'asc')->get();
        $client = client::orderBy('id', 'asc')->get();
        $metiers = metier::orderBy('id', 'asc')->get();
        $technicien = Technicien::orderBy('id', 'desc')->get();
        $tarifications = tarificationtache::orderBy('id', 'desc')->get();
    
        return view('intervention.create')->with('technicien', $technicien)- 
     >with('client',$client)->with('metiers',$metiers)- 
     >with('tarifications',$tarifications);
    }
    
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(InterventionRequest $request)
    {
        $intervention = new Intervention();
    
        $intervention ->description =$request->input('description');
        $intervention ->duree_prevu =$request->input('duree_prevu');
    
    
        if($request->has('statut')){
        $intervention->statut = $request->input('statut');
        }else{
               $intervention->statut = 0;
        }
    
        $intervention ->technicien_id = $request->input('technicien_id');
        $intervention ->client_id = $request->input('client_id');
        $intervention ->tarification_id = $request->tarificationtache_id;
        $intervention->save();
        return redirect('intervention');
    
    
    
    
    }
    
    public function prodfunct(){
    
        $technicien=technicien::all();//get data from table
        return redirect('intervention',compact('technicien'));//sent data to 
     view
    
    }
    public function findlibelle_metier(Request $request){
    
    
        $metier=metier::all();//get data from table
        return redirect('intervention',compact('metier'));//sent data to view
    }
    
    public function findProductName(Request $request){
        //if our chosen id and products table prod_cat_id col match the get 
    first 100 data
        //$request->id here is the id of our chosen option id
        $data=tache::select('libelle_tache','id')->where('metier_id',$request- 
    >id)->take(100)->get();
        return response()->json($data);//then sent this data to ajax success
    }
    
    
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show( $id)
    {
        $intervention=Intervention::find($id);
        $technicien = $intervention->technicien;
        $tarificationtache = tarificationtache::orderBy('id', 'desc')->get();
        return view('intervention.show',['intervention'=>$intervention])- 
    >with('technicien',$technicien)->with('tarificationtache',   
    $tarificationtache);
    }
    
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
    
        $intervention=Intervention::find($id);
        return view('intervention.edit',['intervention'=>$intervention]);
    
    }
    
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(InterventionRequest $request, $id)
    {
        $intervention=Intervention::find($id);
        $intervention ->date_intervention =$request->input('date_intervention');
        $intervention ->description =$request->input('description');
        $intervention ->duree_prevu =$request->input('duree_prevu');
        $intervention ->statut =$request->has('statut');
    
        $intervention->save();
        return redirect('intervention');
    
    }
    
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $intervention =intervention::find($id);
        $intervention->delete();
        return redirect('intervention');
    }
    
    }
    

    创建.blade.php

        @extends('Layouts/app')
    @extends('Layouts/master')
    @section('content')
    <!--  jQuery -->
    <script 
    src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"> 
    </script>
    <script type="text/javascript">
     var getTachesByMetierUrl = "{{url('/tachesbymetier')}}";
        var getAdresseByClientUrl = "{{url('/adressebyclient')}}";
        var getTarificationsByTacheUrl = "{{url('/tarificationsbytache')}}";
        var getTechniciensByTarificationtacheUrl = " 
     {{url('/techniciensbytarificationtache')}}";
    
    
    
        function getAdresseByClient(val) {
            if(val.length>0) {
                var client_id = val;
                $.get(getAdresseByClientUrl+'/'+client_id,function(res) {
                    var html = '<option value="">-Select-</option>' ;
                    $.each(res.adresses,function(index,item) {
                        html+='<option 
      value="'+item.id+'">'+item.code_postal+'</option>';
                    });
                    $('#adresses').html(html);
    
                });
            }
        }
    
    
        function getTachesByMetier(val) {
            if(val.length>0) {
                var metier_id = val;
                $.get(getTachesByMetierUrl+'/'+metier_id,function(res) {
                    var html = '<option value="">-Select-</option>' ;
                    $.each(res.taches,function(index,item) {
                        html+='<option 
      value="'+item.id+'">'+item.libelle_tache+'</option>';
                    });
                    $('#taches').html(html);
    
                });
            }
        }
    
         function getTechniciensByTache(val) {
            if(val.length>0) {
                var tache_id = val;
    
     $.get(getTechniciensByTacheUrl+'/'+tarificationtache_id,function(res) {
                    var html = '<option value="">-Select-</option>' ;
                    $.each(res.techniciens,function(index,item) {
                        html+='<option 
     value="'+item.id+'">'+item.id.nom+'</option>';
                    });
                    $('#techniciens').html(html);
    
                });
            }
        }
      function getTarificationsByTache(val) {
    
            if(val.length>0) {
                var tache_id = val;
                $.get(getTarificationsByTacheUrl+'/'+tache_id,function(res) {
                    var html = '<option value="">-Select-</option>' ;
                    $.each(res.tarifications,function(index,item) {
                        html+='<option 
     value="'+item.id+'">'+item.tarif+'</option>';
                    });
                    $('#tarifications').html(html);
    
                });
            }
        }
    
        function getTechniciensByTarificationtache(val) {
            if(val.length>0) {
                var tarificationtache_id = val;
      $.get(getTechniciensByTarificationtacheUrl+'/'+tarificationtache_id, 
      function(res ) {
                    var html = '<option value="">-Select-</option>' ;
                    $.each(res.techniciens,function(index,item) {
                        html+='<option 
     value="'+item.id+'">'+item.id.nom+'</option>';
                    });
                    $('#techniciens').html(html);
    
                });
            }
        }
    </script>
    @if(count($errors))
        <div class="alert alert-danger" role="alert">
            <ul>
                @foreach($errors ->all() as $message)
                    <li>{{$message}}</li>
                @endforeach
            </ul>
        </div>
    @endif
    <div class="container">
        <div class="row"></div>
        <div class="col-md-10">
            <h1>Ajout Intervention</h1>
            <form action=" {{url ('intervention')  }}" method="post">
                {{csrf_field()}}
                <div class="form-group">
                    <label for="client">Client</label>
                    <select onchange="getAdresseByClient(this.value)" 
     name="client_id" id="client" class="form-control">
                        <option value="">-Select-</option>
                        @foreach($client as $t)
                            <option value="{{$t->id }}">
                                {{$t->user->nom}}
                            </option>
                        @endforeach
                    </select>
                </div>
                <div class="form-group">
                    <label for="">date et heure </label>
                    <input class="form-control" type="datetime-local"  name 
      ="duree_prevu" value="{{old('duree_prevu')}}">
                </div>
    
                <div class="form-group">
                    <label for="">description</label>
                    <input type="text"  name ="description" class="form- 
     control"value="{{old('description')}}">
                </div>
    
        <div class="form-group">
                    <div class="col-md-12">
                    <div class="col-md-4">
                    <label>Metier: </label>
                    <select onchange="getTachesByMetier(this.value)" 
     style="width: 200px" class="productm form-control" id="metiers">
                   <option value="">-Select-</option>
                        @foreach($metiers as $t)
                            <option value="{{$t->id }}">
                                {{$t->libelle_metier}}
                            </option>
                        @endforeach
                    </select>
                </div>
    
                <div class="col-md-4">
                    <label>tache: </label>
                    <select onchange="getTarificationsByTache(this.value)" 
     style="width: 200px" class="productname form-control" name="tache" 
     id="taches">
                    <option value="">-Select-</option>
                    </select>
                </div>
                <div class="col-md-4">
                    <label>tarification: </label>
                    <select 
    onchange="getTechniciensByTarificationtache(this.value)" style="width: 
    200px" 
    class="productname form-control" name="tarificationtache_id" 
    id="tarifications">
                    <option value="">-Select-</option>
                    </select>
                </div>
    
                <div class="col-md-4">
                            <label>technicien: </label>
                            <select style="width: 200px" class="productname 
     form-control" name="technicien_id" id="technicien">
                                <option value="">-Select-</option>
                            </select>
                        </div>
    
    
    
    </div>
    
                <div class="form-group">
                    <div class="form-group">
                    <label for="">statut    :   </label>
                    <input type="checkbox"  name ="statut" value="1" required 
     autofocus>
                </div>
                <div class="form-group">
                    <label for="">payement</label>
                    <input type="checkbox"  name ="payement" value="">
                </div>
                <div class="form-group">
    
                    <input type="submit" value = "enregistrer" class="form- 
    control btn btn-primary">
                </div>
    </div>
    </div>
    </div>
    
    
    <link 
    href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" 
     rel="stylesheet">
    
    <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap- 
    datepicker/1.5.0/css/bootstrap-datepicker.css" rel="stylesheet">
    
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"> 
    </script>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap- 
    datepicker/1.5.0/js/bootstrap-datepicker.js"></script>
    
    @endsection
    

    表技术人员

    Schema::create('techniciens', function (Blueprint $table) {
            $table->increments('id');
            $table->boolean('actif')->default(1);
            $table->float('moyenne_avis')->nullable();
            $table->integer('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users');
            $table->datetime('deleted_at')->nullable();
            $table->timestamps();
    
        });
    

    *

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   yrv16    6 年前

    而不是:

    html+='<option value="'+item.id+'">'+item.id.nom+'</option>';
    

    您需要:

    html+='<option value="'+item.id+'">'+item.user.nom+'</option>';
    

    并改变这一点:

    public function getTechniciensByTarificationtache($tarificationtache_id) 
       { 
          $t = tarificationtache::with('techniciens.user')->find($tarificationtache_id); 
              return response()->json(['techniciens' => $t->techniciens]); 
       }