example data php database dynamic routes laravel

php - example - select2 data format



Urls dinĂ¡micas en laravel? (3)

Estoy buscando cambiar a laravel para mi próximo proyecto.

Mi próximo proyecto probablemente sea un sitio pequeño con algunas páginas estáticas, un blog y un administrador de proyectos, y utilizará controladores y no rutas.

Lo que me interesa es cómo puedo administrar rutas dinámicas en Laravel.

Básicamente, quiero construir en una sección de administrador para que pueda crear fácilmente las páginas estáticas sobre la marcha, y las páginas estáticas tendrán direcciones URL centradas en SEO, por ejemplo, http://domain.com/when-it-started , no quiero tener que crear un nuevo controlador o ruta de forma manual para cada página.

Entonces me pregunto cuál es la forma más limpia de manejar esto.

esencialmente, todas las páginas estáticas compartirán la misma vista, solo unas pocas variables para cambiar.

El enrutamiento dinámico debería funcionar con los controladores no en lugar de.

Por ejemplo, si tenemos un controlador con un staff función staff entonces esto debe cargarse a través de http://domain.com/about/staff

pero no tenemos los players funciones, por lo que una llamada a http://domain.com/about/players debería verificar la base de datos para ver si existe una ruta dinámica y coincide. Si muestra eso, de lo contrario, muestra la página 404. Del mismo modo para un controlador inexistente. (por ejemplo, no habría un controlador de when-it-started )

La respuesta elegida no parece funcionar en Laravel 4. ¿Alguna ayuda con eso?


Muy similar a la respuesta de Charles, pero en el controlador:

public function showBySlug($slug) { $post = Post::where(''slug'',''='',$slug)->first(); // would use app/posts/show.blade.php return View::make(''posts.show'')->with(array( ''post'' => $post, )); }

Entonces puedes enrutarlo así:

Route::get(''post/{slug}'', ''PostsController@showBySlug'') ->where(''slug'', ''[/-_A-Za-z]+'');`

... que tiene la ventaja añadida de permitirle una forma fácil de vincular directamente a las rutas slug en una página de índice, por ejemplo:

@foreach ($posts as $post) <h2>{{ HTML::link( action(''PostsController@showBySlug'', array($post->slug)), $post->title )}}</h2> @endforeach


Para Laravel 4 haz esto

Route::get(''{slug}'', function($slug) { $page = Page::where(''slug'', ''='', $slug)->first(); if ( is_null($page) ) // use either one of the two lines below. I prefer the second now // return Event::first(''404''); App::abort(404); return View::make(''pages.show'', array(''page'' => $page)); }); // for controllers and views Route::get(''{page}'', array(''as'' => ''pages.show'', ''uses'' => ''PageController@show''));


Puede usar los comodines de ruta para el trabajo, puede comenzar con un (:any) y si necesita varios segmentos de URL, agregue un (:all?) Opcional, luego identifique la página del babosa.

Por ejemplo:

Route::get(''(:any)'', function($slug) { $page = Page::where_slug($slug)->first(); if ( is_null($page) ) return Event::first(''404''); return View::make(''page'')->with($page); });