web-dev-qa-db-fra.com

Laravel 5 obtenir l'ID de l'URL

J'ai une vue sous forme de tableau dans laquelle je peux cliquer sur une icône de bouton et rediriger vers une autre page contenant leidde la ligne sur laquelle l'utilisateur a cliqué.

@foreach ($patients as $patient)
    <tr>
        <td>{{ $patient->pID }}</td>
        <td>{{ $patient->pName }}</td> 
        <td>{{ $patient->pAddress }}</td>
        <td>{{ $patient->pBday }}</td>
        <td>{{ $patient->pPhone}}</td>
        <td>{{ $patient->pEcon }}</td>
        <td>{{ $patient->pDreg }}</td>
        <td></td>
        <td>
            <a href="{{ URL::to('visit/'.$patient->pID) }}">
                <img src="../images/viewvisit.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="{{ URL::to('addeditvisit/'.$patient->pID) }}">
                <img src="../images/visit.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="{{ URL::to('editpatient/'.$patient->pID) }}">
                <img src="../images/update.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="{{ URL::to('deletepatient/'.$patient->pID) }}">
                <img src="../images/delete.png" style="width:30px; height:30px;">
            </a>
        </td>
    </tr>
@endforeach 

ce que je veux, c'est obtenir le id de l'URL et le mettre dans une variable afin que je puisse l'utiliser comme autre page.

Je suis actuellement coincé avec cette fonction de contrôleur.

public function index(Request $request) {   

    $doctors = Doctor::where('dStatus', 0)
        ->lists('dName', 'dID');
    $beds = Bed::where('bStatus', 0)
        ->lists('bName', 'bID');
    $patient = Patient::patient();
    // $uri = $request->path('patient');

    return View::make('pages.addeditvisit', [
        'doctors'=>$doctors,
        'beds'=>$beds,
        'patient'=>$patient->pID
    ]);
}
6
Kent Abrio

Fondamentalement, lorsque vous définissez les itinéraires, vous utilisez quelque chose appelé paramètres de route, quelque chose comme ceci

Route::get('/visit/{id}', 'Controller@someMethod');

Cet identifiant sera disponible en tant que paramètre dans votre fonction de gestionnaire,

public function someMethod($id) {
    // you have the id here
}
12
Akshendra Pratap

C'est tard. Mais pour le bénéfice des autres comme moi;

Si vous n’avez pas à le faire avec une méthode telle que celle indiquée dans les réponses ci-dessus, à partir de Laravel 5.0 (vous n'êtes pas sûr des versions précédentes), 

$request->route('id');

Cela renvoie la valeur du paramètre id sur la route.

2
Daniel Verem

L'astuce consiste à déclarer la structure de l'URL sur les routes incluant l'id, par exemple:

// {{ URL::to('editpatient/'.$patient->pID) }}
Route::get('editpatient/{patientId}', 'MyController@index');

Ensuite, il suffit d'injecter l'identifiant dans la fonction du contrôleur:

public function index($patientId){
    // $patientId is the variable from url
}
1
manix

Exemple simple:

as link=>   example.com/user/1

as rout=> Route::get('user/{id}', 'UserController@user');

as UserController function 

public function user($id){

    echo $id;

}

output => 1
0
Bhale Dino
Route::get('post/user/{id}','ProductController@allpost')->where('id', '[0-9]+');

Manette

public function allpost($id)
    {
        $products = Product::where('uploadby', $id)->orderBy('created_at','desc')->paginate(5); <br>
        return view('product.user_product')->with('products', $products);
    }
0
Myat Htut