views - ciclo - foreach laravel controller
Laravel 4 Controller Templating/Blade-¿Método correcto? (4)
He estado leyendo la documentación de Laravel 4 y he estado haciendo una aplicación de demostración para ayudar con el aprendizaje.
No pude encontrar mucha documentación sobre la plantilla de vistas con blade y controladores. ¿Cuál es el método correcto o se reduce a las preferencias personales?
Ej. 1
Controladores / HomeController.php
protected $layout = ''layouts.main'';
public function showWelcome()
{
$this->layout->title = "Page Title";
$this->layout->content = View::make(''welcome'');
}
Vistas / diseños / main.blade.php
<html>
<head>
<title>{{ $title }}</title>
</head>
<body>
{{ $content }}
</body>
</html>
Vistas / bienvenida.blade.php
<p>Welcome.</p>
Ej. 2
Controladores / HomeController.php
protected $layout = ''layouts.main'';
public function showWelcome()
{
$this->layout->content = View::make(''welcome'');
}
Vistas / diseños / main.blade.php
<html>
<head>
<title>@yield(''title'')</title>
</head>
<body>
@yield(''content'')
</body>
</html>
Vistas / bienvenida.blade.php
@section(''title'', ''Welcome'')
@section(''content'')
// content
@stop
¿Cuál es la mejor convención y / o ventajas de la anterior?
No almaceno ninguna información de diseño en el controlador, la guardo en la vista a través de
@extends(''layouts.master'')
Cuando necesito devolver una vista en el controlador que uso:
return /View::make(''examples.foo'')->with(''foo'', $bar);
Prefiero este enfoque, ya que la vista determina qué diseño usar y no el controlador, que está sujeto a la re-factorización.
No me gustan ninguno de ellos. Los diseños son probablemente la parte más extraña de Laravel. La versión del controlador realmente no tiene sentido; Todos los métodos del controlador requieren esa vista. La versión @yield es un lío de repetitivo. Hice este "diseño de métodos específicos":
public function index()
{
return View::make(''layouts.main'', [
''layout_data'' => ''sup''
])->nest(''content'', ''welcome'', [
''view_data'' => ''sup''
]);
}
Creo que debería mencionarse en los documentos que esta es una opción.
Prefiero el primer método ya que algunos sitios tienen un título generado dinámicamente desde la base de datos. Es fácil pasar el título usando el primer método.
Prefiero la segunda, porque muestra una separación más clara entre su vista y el código del controlador. Me parece más lógico que el título sea una propiedad de una vista de contenido en lugar de combinar su vista de bienvenida con su título de bienvenida cada vez.
Al final, ambos son correctos y funcionarán, pero la segunda alternativa es más fácil de mantener.