2009-04-24 25 views
17

Siempre estoy superado por esta pregunta al iniciar un nuevo proyecto. Cuando miro ejemplos como Mephisto, Typo, etc., encaminan su raíz a un controlador que se relaciona con un recurso/modelo específico.Nombrar el controlador raíz

Mi problema es que, casi en todos los sitios que he creado, siento que mi portada es en realidad una colaboración de todos mis modelos, y no me veo apuntando a un controlador relacionado con uno específico como mi página de inicio

¿Alguien tiende a crear un controlador específicamente diseñado para el frente del sitio web? O si tal vez estoy viendo esto completamente mal, por favor avíseme.

edición:

Aquí es donde existe mi confusión: la raíz

rboard's routes mapas a un índice de controlador llamado ... pero yo ni siquiera puede encontrar un controlador de índice

mephisto's routes uso algunos custom routing cosa, y no hay una raíz o incluso un map.connect a '/'

radiant's routes para la mayor parte de la aplicación va a un controlador, que luego hace un poco de magia loca

track's routes ve a un controlador que está relacionado con un recurso (este es un ejemplo más cercano a lo que describí arriba) ... pero no me queda porque como he dicho, mis raíces tienden a tener toneladas de cosas.

spot us en realidad hace algo similar a lo que hago, tengo un controlador de casa que solo tiene una acción de muestra, y esa es mi portada.

+0

También tengo este problema en Django y ASP.NET. no permitamos limitar su pregunta a un marco específico. :)) – AmiNadimi

Respuesta

9

Mi problema es que casi todos los sitios web he construido jamás, me siento como mi frente la página es en realidad una colaboración de todos mis modelos, y no puedo verme a mí mismo apuntando a un controlador que es relacionado con uno específico como mi página de aterrizaje .

Exactamente. Entonces, lo que estás haciendo es correcto.

A menudo hago dos controladores para las interacciones con cosas que no son las cosas habituales de REST: 'bienvenida' y 'tablero'. El controlador de bienvenida se asigna a la raíz de mi sitio, y el controlador 'tablero' es similar, pero para los usuarios que han iniciado sesión.

+0

Entonces, lo que está diciendo es que la página de inicio de la mayoría de las personas es esencialmente un recurso de descanso, donde esta situación garantiza un caso especial para no asignar a un controlador que se relaciona con un modelo. – phillc

+0

No sé acerca de la mayoría de la gente. Los míos son generalmente como los tuyos. No son un recurso, son un montón de otros diferentes. –

2

No estoy seguro de si esta es la respuesta que está buscando, pero esto es lo que hago. Usualmente uso una combinación de dos tipos de controlador, un controlador frontal y controladores de acción. El controlador frontal se ocupa del enrutamiento de URL y determina qué acción tomar, mientras que los controladores de acción proporcionan la funcionalidad real. Es un enfoque similar a lo que hace Zend Framework.

Dicho esto, canalizaré todo el tráfico a través de un controlador frontal, incluido el tráfico de la página principal. Por lo general, tengo un controlador de acción llamado "IndexController" que maneja las diversas solicitudes de página, y a menudo la página de inicio se incluye en esa categoría (así como cosas como páginas de política de privacidad, formularios de contacto, etc.).

Si una página no está específicamente relacionada con la lógica del dominio comercial del sitio, tiendo a ponerla en mi controlador de acción del índice, aunque me esfuerzo por agrupar la funcionalidad del sitio de la mejor manera posible.

5

¿Alguien tiende a crear un controlador específicamente diseñado para el frente del sitio web? O si tal vez estoy viendo esto completamente mal, por favor avíseme.

La respuesta es "sí".

Por lo que vale, generalmente tomo un enfoque similar a Spot.Us y defino un HomeController con una acción/acción de índice y simplemente lo dejo.

+1

Voy con HomeController. Inicio, Predeterminado, Sitio todo me parece bien. –

0

SiteController parece ser el mejor nombre para mí.SiteController contendrá su acción más importante, índice, y mi SiteController siempre contiene otras acciones como el contacto, sobre, etc.

Cuestiones relacionadas