Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

IT2704's avatar

How to autofill form with id from the previous Form

I'm trying to autofill form with id of techinician from the previous form after clicking add button

    @extends('Layouts/app')
@extends('Layouts.master')
@section('content')
@if(count($errors))
    <div class="alert alert-danger" role="alert">
    <ul>
    @foreach($errors ->all() as $message)
    <li>{{$message}}</li>
    @endforeach
    </ul>
    </div>
    @endif
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>



    <script type="text/javascript">

    var getMetiersByTechnicienUrl = "{{url('/metiersbytechnicien')}}";
 var getTachesByMetierUrl = "{{url('/tachesbymetier')}}";

//console.log(getMetiersByTechnicienUrl,getTachesByMetierUrl,
getTarificationsByTacheUrl);
    function getMetiersByTechnicien(val) {
    if(val.length>0) {
        var technicien_id = val;
        $.get(getMetiersByTechnicienUrl+'/'+technicien_id,function(res) {
            var html = '<option value="">-Select-</option>' ;
            $.each(res.metiers,function(index,item) {
                html+='<option value="'+item.id+'">'+item.libelle_metier+'</option>';
            });
            $('#metiers').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);

        });
        }
        }

        </script>
    <div class="container">
        <div class="row"></div>
        <div class="col-md-12">
        Z
        <div class="col-md-10">
        <h1>Tarification tache</h1>
        <form action=" {{url ('tarification')  }}" method="post">
         {{csrf_field()}}

        <div class="form-group">
         <label for="technicien">Technicien</label>
            <select onchange="getMetiersByTechnicien(this.value)" name="technicien_id" 
        id="technicien" class="form-control">
                <option value="">-Select-</option>
                @foreach($technicien as $t)
                    <option value="{{$t->id }}">
                        {{$t->user->nom}}
                    </option>
                @endforeach
            </select>
        </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>


        </select>
                </div>
                <div class="col-md-4">
                    <label>tache: </label>
                    <select style="width: 200px" class="productname form-control" 
    name="tache_id" id="taches">
                        <option value="">-Select-</option>
                    </select>
                </div>
                <div class="col-md-4">
                    <label>tarification: </label>
                    <input style="width: 200px" class="productname form-control" type="text"  
 name ="Tarif" class="form-control" value="{{old('tarif')}}">
                       
                    
                </div>


            </div>
            </div>
            <div class="form-group">
            <input type="submit" value = "enregistrer" class="form-control btn btn-primary">
        </div>
        </div>
            </div>
        </div>

@endsection

tarificationcontroller:

<?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\tarificationtache;
    use App\technicien;
    use App\tache;
    use App\metier;

    class TarificationController extends Controller
    {
    /**
    * Display a listing of the resource.
    *
    * @return \Illuminate\Http\Response
    */
    public function index()
    {
    $Listtache=tache::orderBy('libelle_tache')->get();
    $Listtarification=tarificationtache::all();
    return view('tarification.index',['tarification'=>$Listtarification]);
    }

/**
    * Show the form for creating a new resource.
    *
    * @return \Illuminate\Http\Response
    */
    public function create()
    {
    $technicien = technicien::orderBy('id','desc')->get();
    $taches = Tache::orderBy('libelle_tache', 'asc')->get();
    $metiers = Metier::orderBy('libelle_metier', 'asc')->get();
    return view('tarification.create')->with('taches', $taches)->with('technicien', $technicien)- 
    >with('metiers', $metiers);
}

/**
* Store a newly created resource in storage.
*
* @param  \Illuminate\Http\Request  $request
*@return \Illuminate\Http\Response
*/
public function store(Request $request)
{

    $tarification = new tarificationtache();
    $tarification ->tache_id = $request->input('tache_id');
    $tarification ->Tarif =$request->input('Tarif');
    $tarification->save();
    $tarification->techniciens()->attach($request->technicien_id);
    return redirect('technicien');  }

/**
    * Display the specified resource.
    *
    * @param  int  $id
    * @return \Illuminate\Http\Response
    */
    public function show($id)
    {
    //
    }

    /**
    * Show the form for editing the specified resource.
    *
    * @param  int  $id
    * @return \Illuminate\Http\Response
    */
    public function edit($id)
    {
    $tache=Tache::find($id);
    return view('tache.edit',['libelle_tache'=>$tache],['Tarif'=>$tache],['metier_id'=>$tache]);
    }

/**
* Update the specified resource in storage.
*
* @param  \Illuminate\Http\Request  $request
* @param  int  $id
* @return \Illuminate\Http\Response
*/
    public function update(Request $request, $id)
    {
    //
}

/**
    * Remove the specified resource from storage.
    *
* @param  int  $id
    * @return \Illuminate\Http\Response
    */
public function destroy($id)
{
    $tache =Tache::find($id);
    $tache->delete();

    return redirect('tache');
}
public function getTarificationsByTache($tache_id)
    {
    $t =tache::find($tache_id);
    return response()->json(['tarifications' => $t->tarificationtache]);
    }
0 likes
2 replies
danielec81's avatar

If I understand correctly you want to render the form with the technician selected.

You need to add a parameter to the create route like $technicien_id that is optional

Route::get('tarification/create/{technicien_id?}', 'TarificationController@create');

Then your function in controller:

public function create($technicien_id = null)

In the function you will have the technician id, so simply pass to the blade view and populate the select correctly:

 <select onchange="getMetiersByTechnicien(this.value)" name="technicien_id" id="technicien" class="form-control">
       <option value="">-Select-</option>
       @foreach($technicien as $t)
              <option value="{{$t->id }}" {{ $t->id == $technicien_id ? 'selected = "selected"' : '' }}>
                    {{$t->user->nom}}
              </option>
       @endforeach
</select>

Of course you have to call getMetiersByTechnicien({{$technicien_id}}) somewhere after the form

IT2704's avatar

@danielec81 thank you for your help. Could you please explain me more how i could call getMetiersByTechnicien({{$technicien_id}}).. because trying this i've got "Undefined variable: technicien_id (View: C:\xampp\htdocs\projet\resources\views\tarification\create.blade.php)" knowing that i have many tomany relation between "technicien" and "tarification" Thanks again

Please or to participate in this conversation.