Laravel 5 obteniendo ID de URL

4 minutos de lectura

Avatar de usuario de Kent Abrio
Kent Abrio

Tengo una vista de tabla en la que puedo hacer clic en el icono de un botón y redirigir a otra página que lleva el identificación de la fila en la que se ha hecho clic.

@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="https://stackoverflow.com/questions/33266316/{{ URL::to("visit/'.$patient->pID) }}">
                <img src="../images/viewvisit.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="https://stackoverflow.com/questions/33266316/{{ URL::to("addeditvisit/'.$patient->pID) }}">
                <img src="../images/visit.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="https://stackoverflow.com/questions/33266316/{{ URL::to("editpatient/'.$patient->pID) }}">
                <img src="../images/update.png" style="width:30px; height:30px;">
            </a>
        </td>
        <td>
            <a href="https://stackoverflow.com/questions/33266316/{{ URL::to("deletepatient/'.$patient->pID) }}">
                <img src="../images/delete.png" style="width:30px; height:30px;">
            </a>
        </td>
    </tr>
@endforeach 

lo que quiero es conseguir el identificación de la URL y colóquelo en una variable para que pueda utilizarlo en mi otra página.

Actualmente estoy atascado con esta función de controlador.

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
    ]);
}

  • ¿Cómo definiste tus rutas?

    – Akshendra Pratap

    21/10/2015 a las 18:13

Avatar de usuario de Verem Dugeri
verem dugeri

esto es tarde Pero para el beneficio de otros como yo;

Si no tiene que hacerlo en un método como se muestra en las respuestas anteriores, a partir de Laravel 5.0 (no estoy seguro acerca de las versiones anteriores), puede hacerlo

$request->route('id');

Eso devuelve el valor de la id parámetro en la ruta.

Avatar de usuario de Harry Bosh
harry bosh

O simplemente úsalo dentro de Blade: {{ request()->route('id') }}

Básicamente, cuando estás definiendo las rutas, usas algo llamado parámetros de rutaalgo como esto

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

Esta identificación estará disponible como un parámetro en su función de controlador,

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

  • ¿Qué pasa si no estás en esa página?

    –Dustin Graham

    06/10/2017 a las 19:40

Avatar de usuario de Bhale Dino
Bhale Dino

Ejemplo sencillo:

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

El truco es declarar la estructura de la URL en las rutas que incluyen la identificación, por ejemplo:

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

Luego, simplemente inyecte la identificación en la función del controlador:

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

Avatar de usuario de Grant
Conceder

Consulte la pregunta respondida sobre cómo obtener un parámetro de una ruta. Pero si te topaste con este antiguo hilo de Laravel buscando cómo recuperar un modelo por su ID, la forma más sencilla es crear una instancia del modelo en el parámetro de solicitud del controlador:

Route::get('/retrieve_product/{product}', 'SearchController@getProduct');

Luego, en su controlador, simplemente necesita:

use App\Product;

class SearchController extends Controller
{
    public function getProduct( Product $product ) {
        return $product;
    }
}

Eso es todo. Sin encontrar, sin dónde, sin obtener, sin primero, etc.

Entonces, en este ejemplo, si visitas /retrieve_product/1 se le devuelve el primer producto.

Avatar de usuario de Myat Htut
Myat Htut

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

Controlador

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

¿Ha sido útil esta solución?