Juan Ariel Vasquez Hernandez
Juan Ariel Vasquez Hernandez
Comparte:
Regresar

Duplicado de rutas en Laravel

Laravel
Hola mucho gusto tengo una duda en Laravel,
Seria correcto duplicar una ruta que hagan referencia al mismo controlador y metodo por ejemplo:
Route::get('contactos', 'ContactosController@index')->name('contact.contactos');
Route::get('process_group/contactos', 'ContactosController@index')->name('contact.projcessgroup');
Explico, lo que sucede es que estoy añadiendole en un menu desplegable un remarcado para que el usuario vea en donde esta parado pero este menu tiene 3 secciones, en las diferentes opciones hacen referencia por ejemplo a la ruta de contactos y para remarcar donde esta parado le agrego una clase active con esta funcionalidad Request::is('contactos') ? 'active' : '' pero como en otras opciones utilizan esta ruta y tienen esta funcionalidad para agregar la clase active entonces se me remarca en los lugares donde esta la funcionalidad, de momento lo que e pensado hasta ahora es duplicar la ruta y cambiarsela, para no crear esa colision, lo tengo duplicado y funciona correctamente, pero me gustaria saber si seria correcto o mala practica duplicarlas?
Agradesco sus comentarios.
Jorge García
Jorge García
Hola Juan, no entiendo muy bien tu explicación, pero no veo la necesidad de duplicar rutas, pero tendría que ver más de tu código para entender mejor el porqué de esa duplicación y cómo evitarla. 
Ok en un menu lateral hay 2 opciones de menu desplegable de 3 niveles y en el ultimo nivel estan los enlaces que contiene las opciones a otras paginas, en este caso entre ellas esta contratos, y este enlace de contratos esta en otras opciones del menu desplegable utilizando la misma ruta y la misma funcionalidad, lo que yo quiero es que se resalte o quede marcado en la opcion que estaria hacaiendo click agregandole una clase "active" que llena de fondo azul donde estoy parado, el detalle es que se remarca en todos los lugares donde se esta utilizando esta ruta que tiene el mismo condicional de Request::is('contracts'):
la ruta utilizada es:
Route::get('/contracts', 'ContractController@index');

Codigo del enlace:
<li class=" {{ (Request::is('contracts') ? 'active' : ' ') }}">
     <a href="{{ url('contracts') }}">{{ __('sidebar.contracts') }}</a>
</li>
Nota: Esta mismo codigo se utiliza en otros lugares del menu lateral.

Esto funciona perodonde se utiliza este mismo codigo tambien se remarca, entonces como puedo independizar esta manera de remarcarlo, solamente se remarque donde estoy haciendo clic y no en las demas opciones que estarian en otra parte del menu, aunque acceden a esta misma ruta, por ello pense en duplicar la referencia al mismo controlador y metodo pero cambiandole el nombre de la ruta por ejemplo:

Route::get('knowledge_area/contracts', 'ContractController@index');
Route::get('process_group/contracts', 'ContractController@index');

entonces en el codigo del menu agregaria esto:
Esto en una opcion del menu desplegable:
<li class=" {{ (Request::is('knowldege_area/contracts') ? 'active' : ' ') }}">
     <a href="{{ url('knowledge_area/contracts') }}">{{ __('sidebar.contracts') }}</a>
</li>

Este otro en otra parte del menu donde se agregaria:
<li class=" {{ (Request::is('process_group/contracts') ? 'active' : ' ') }}">
     <a href="{{ url('process_group/contracts') }}">{{ __('sidebar.contracts') }}</a>
</li>

ya con ello se remarca solo donde estoy haciendo click a esa ruta, si necesitase capturas indicarme a donde podria enviarselas, que veo que aca no puedo subirlas.
Espero haberme podido explicar correctamente que es lo quiero expresarle.

Agredesco su apoyo, que se encuentre bien saludos.
Ok en un menu lateral hay 2 opciones de menu desplegable de 3 niveles y en el ultimo nivel estan los enlaces que contiene las opciones a otras paginas, en este caso entre ellas esta contratos, y este enlace de contratos esta en otras opciones del menu desplegable utilizando la misma ruta y la misma funcionalidad, lo que yo quiero es que se resalte o quede marcado en la opcion que estaria hacaiendo click agregandole una clase "active" que llena de fondo azul donde estoy parado, el detalle es que se remarca en todos los lugares donde se esta utilizando esta ruta que tiene el mismo condicional de Request::is('contracts'):
la ruta utilizada es:
Route::get('/contracts', 'ContractController@index');

Codigo del enlace:
<li class=" {{ (Request::is('contracts') ? 'active' : ' ') }}">
     <a href="{{ url('contracts') }}">{{ __('sidebar.contracts') }}</a>
</li>
Nota: Esta mismo codigo se utiliza en otros lugares del menu lateral.

Esto funciona perodonde se utiliza este mismo codigo tambien se remarca, entonces como puedo independizar esta manera de remarcarlo, solamente se remarque donde estoy haciendo clic y no en las demas opciones que estarian en otra parte del menu, aunque acceden a esta misma ruta, por ello pense en duplicar la referencia al mismo controlador y metodo pero cambiandole el nombre de la ruta por ejemplo:

Route::get('knowledge_area/contracts', 'ContractController@index');
Route::get('process_group/contracts', 'ContractController@index');

entonces en el codigo del menu agregaria esto:
Esto en una opcion del menu desplegable:
<li class=" {{ (Request::is('knowldege_area/contracts') ? 'active' : ' ') }}">
     <a href="{{ url('knowledge_area/contracts') }}">{{ __('sidebar.contracts') }}</a>
</li>

Este otro en otra parte del menu donde se agregaria:
<li class=" {{ (Request::is('process_group/contracts') ? 'active' : ' ') }}">
     <a href="{{ url('process_group/contracts') }}">{{ __('sidebar.contracts') }}</a>
</li>

ya con ello se remarca solo donde estoy haciendo click a esa ruta, si necesitase capturas indicarme a donde podria enviarselas, que veo que aca no puedo subirlas.
Espero haberme podido explicar correctamente que es lo quiero expresarle.

Agredesco su apoyo, que se encuentre bien saludos.