es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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í?

Tags:  , , , ,

Answer

  1. Avatar for 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

    Route::get('main', [HomePageController::class, 'show']);
    Route::get('main/feeds', [HomePageController::class, 'showfeeds']);
    

    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.

Comments are closed.