vistas vista rutas ruta route por parametros enviar datos controladores controlador con php laravel

php - vista - url laravel



Cómo definir una ruta de Laravel con un parámetro que contiene un carácter de barra inclinada (3)

Agregue la siguiente ruta catch-all al final de su routes.php y recuerde ejecutar routes.php composer dump-autoload luego. Observe el uso de "-> donde" que especifica el posible contenido de params, lo que le permite usar un parámetro que contiene una barra diagonal.

//routes.php Route::get(''view/{slashData?}'', ''ExampleController@getData'') ->where(''slashData'', ''(.*)'');

Y que en tu controlador solo manejas los datos como lo harías normalmente (como si no tuvieran la barra inclinada).

//controller class ExampleController extends BaseController { public function getData($slashData = null) { if($slashData) { //do stuff } } }

Esto debería funcionar para ti.

Además, aquí tiene detallados los documentos de Laravel sobre los parámetros de ruta: [ docs ]

Quiero definir una ruta con un parámetro que contendrá una barra / carácter como tan example.com/view/abc/02 donde abc/02 es el parámetro.

¿Cómo puedo evitar que Laravel lea la barra como separador para el siguiente parámetro de ruta? Debido a eso estoy recibiendo un 404 not found error ahora.


Las barras recortadas urlencoded no funcionan en Laravel debido a lo que considero un error. https://github.com/laravel/framework/pull/4323 Esta solicitud de extracción resolverá ese error.

Actualizar.

Tenga en cuenta que el cambio permite que la ruta se analice ANTES de descodificar los valores en la ruta.


Tengo un problema similar, pero mi URL contiene varios parámetros de ruta:

/test/{param1WithSlash}/{param2}/{param3}

Y aquí es cómo manejé ese caso:

Route::get(''test/{param1WithSlash}/{param2}/{param3}'', function ($param1MayContainsSlash, $param2, $param3) { $content = "PATH: " . Request::path() . "</br>"; $content .= "PARAM1: $param1WithSlash </br>"; $content .= "PARAM2: $param2 </br>".PHP_EOL; $content .= "PARAM3: $param3 </br>".PHP_EOL; return Response::make($content); })->where(''param1MayContainsSlash'', ''(.*(?:%2F:)?.*)'');

Espero que pueda ayudar.