Mostrando entradas con la etiqueta RouteServiceProvider. Mostrar todas las entradas
Mostrando entradas con la etiqueta RouteServiceProvider. Mostrar todas las entradas

Crear un nuevo archivo de rutas

Todo se hace en routes/web.php pero para que esté todo más limpio y organizado podemos crear el fichero routes\admin.php q contendrá:
use Illuminate\Support\Facades\Route;
use App\Http\Livewire\Admin\ShowProducts;
Route::get("/", ShowProducts::class)->name('admin.index');

Y en app\Providers\RouteServiceProvider.php dentro de boot:
Route::middleware('web', 'auth')
     ->prefix('admin')
     ->namespace($this->namespace)
     ->group(base_path('routes/admin.php'));

Como le hemos puesto prefijo Para acceder a esa ruta será ya:
http://miproyecto/admin

RouteServiceProvider: Creando url amigables dinámicamente

Por ejemplo en routes\peliculas\peliculas.php: $friendlyUrl = ['lo-que-el-viento-se-llevo','rebeca','que-verde-era-mi-valle','la-senora-miniver','casablanca'];

foreach ($friendlyUrl as $clave=>$valor) {
    Route::get($valor, [DeveloperController::class, 'prueba'])->name($valor)->middleware('auth');
}

Y en ese Controller:
function getCurrentRoute() {
    return Request::route()->getName();
}

public function prueba(Request $request) {
    echo "La url de esta página es: ".getCurrentRoute();
    die;
}

Ejemplo:
http://midominio/public/peliculas/casablanca -> La url de esta página es: casablanca
http://midominio/public/peliculas/xxx -> da error

RouteServiceProvider: Creando rutas

En app\Providers\RouteServiceProvider.php en public function map() añadir:
$this->mapPeliculasRoutes();
$this->mapPeliculasAnnoRoutes();

En el mismo En app\Providers\RouteServiceProvider.php crear esas funciones:
protected function mapPeliculasRoutes() {
    Route::prefix('peliculas/')
    ->middleware('web')
    ->namespace($this->namespace)
    ->group(base_path('routes/peliculas/peliculas.php'));
}

protected function mapPeliculasAnnoRoutes() {
    Route::prefix('peliculas/anno/')
    ->middleware('web')
    ->namespace($this->namespace)
    ->group(base_path('routes/peliculas/peliculasAnno.php'));
}

En routes\peliculas\peliculas.php:
Route::get('/', function() {
    return "estás en peliculas";
});

En routes\peliculas\peliculasAnno.php:
Route::get('/', function() {
    return "Estás en peliculas/anno";
});

Route::get('/{anno}', function($anno) {
    return "Estás en peliculas/anno: ".$anno;
});

Ejemplos:
http://midominio/public/peliculas -> da "estás en peliculas"
http://midominio/public/peliculas/anno -> da "estas en Estás en peliculas/anno"
http://midominio/public/peliculas/anno/1992 -> da "estas en Estás en peliculas/anno: 1992"