¿Cómo pasar dos funciones en la misma ruta en Laravel 8?
Tengo esta ruta:
web.php:
Route::get('main',[HomePageController::class,'show']);
que pasa por esta función:
HomePageController.php
class HomePageController extends Controller
{
function show()
{
$data = Classes::all();
return view('index',['classes'=>$data]);
}
}
y quiero pasar otra función en la misma ruta, pero siempre obtengo “Variable indefinida”
cada vez que intento hacer esto:
web.php
Route::get('main',[HomePageController::class,'show']);
Route::get('main',[HomePageController::class,'showfeeds']);
HomePageController.php
class HomePageController extends Controller
{
function show()
{
$data = Classes::all();
return view('index',['classes'=>$data]);
}
function showfeeds()
{
$data = Feeds::all();
return view('index',['feeds'=>$data]);
}
}
¿Qué estoy haciendo mal aquí?
davy.ai
Estás definiendo dos rutas con la misma URL en el archivo web.php, lo que está haciendo que Laravel sobrescriba la primera ruta con la segunda. Deberías definir URLs diferentes para cada ruta de esta manera:
web.php
Al hacer esto, tendrás dos URLs diferentes que apuntan a funciones diferentes en el mismo controlador. Cuando visites la URL ‘/main’, llamará a la función ‘show’ y cuando visites la URL ‘/main/feeds’, llamará a la función ‘showfeeds’.
Además, asegúrate de haber definido los modelos Feeds y Classes en la parte superior de tu controlador. De lo contrario, necesitarías agregar su espacio de nombres completo en tus funciones.