Mi ruta es:

Route::get('members/{name?}/{id}', 'Sample1Controller@sampleFn1');
Route::get('members/{id}/edit', 'Sample2Controller@sampleFn2');

Cuando hago clic en el enlace de la URL de Blade,

<a href="members/1/edit">Edit</a>

Va a la primera ruta y llama a Sample1Controller @ sampleFn1. ¿¿Por qué?? Por favor ayuda..

Cuando hago clic en el enlace ... quiero ir a la segunda ruta y llamar a Sample2Controller @ sampleFn2. ¿Alguna ayuda?

Gracias de antemano.

1
bashirudeen ahmad 21 sep. 2016 a las 15:34

5 respuestas

La mejor respuesta
Route::get('members/{name?}/{id}', 'Sample1Controller@sampleFn1');

Ambas URL tienen el mismo aspecto para laravel, en este caso, $ name se establece en "1" y $ id se establece en "editar". Debe evitar la ambigüedad moviendo el parámetro opcional al final y el texto de estado un nivel atrás, en este caso:

Route::get('members/edit/{id}', 'Sample2Controller@sampleFn2');
Route::get('members/{id}/{name?}', 'Sample1Controller@sampleFn1');
1
Fouad 22 sep. 2016 a las 14:01
      Route::get('/post-delete/{post_id}',[
'uses' => 'PostController@getDeletePost',
'as' => 'post.delete',
'middleware' => 'auth'
]);

Mi controlador es así

public function getDeletePost($post_id)
{
    $post = Post::where('id',$post_id)->first();
    if(Auth::user() != $post->user)
    {
        return redirect()->back();
    }
    $post->delete();
    return redirect()->route('dashboard')->with(['message' => 'Sucessfully Deleted Taunt']);
}

Y mi blade.php es así

  <a href="{{ route('post.delete',['post_id' => $post->id]) }}">Delete</a>

El código anterior es para eliminarlo y pruébelo para editar

0
Jayesh Goyani 27 sep. 2016 a las 11:56

Prueba lo siguiente:

Route::get('members/{id}/edit', 'Sample2Controller@sampleFn2');
Route::get('members/{name?}/{id}', 'Sample1Controller@sampleFn1');
0
Obaidul Kader 21 sep. 2016 a las 12:38

No está validando el nombre o la identificación contra ninguna restricción específica, por lo que está / 1 / edit califica ... para usar las mismas definiciones de ruta, simplemente puede invertir el orden de las definiciones.

0
alaric 21 sep. 2016 a las 12:37

Debe agregar la condición de ruta donde a los parámetros. La primera pregunta es para picaduras, la segunda para enteros:

Route::get('members/{name?}/{id}', 'Sample1Controller@sampleFn1')->where([
    'name' => '[a-z]+',
    'id' => '[0-9]+',
]);
Route::get('members/{id}/edit', 'Sample2Controller@sampleFn2')->where([
    'id' => '[0-9]+'
]);
4
Adiasz 21 sep. 2016 a las 12:39