Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Patron de repositorios + Laravel

Estas en el tema de Patron de repositorios + Laravel en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola. Necesito la ayuda de ustedes. Debo hacer una aplicación en Laravel usando el patrón de repositorios, soy nuevo en Laravel, tengo claro los conceptos ...
  #1 (permalink)  
Antiguo 15/01/2015, 15:40
Avatar de GendeDios  
Fecha de Ingreso: mayo-2007
Ubicación: Paraiso de America
Mensajes: 135
Antigüedad: 16 años, 11 meses
Puntos: 10
Pregunta Patron de repositorios + Laravel

Hola.

Necesito la ayuda de ustedes.
Debo hacer una aplicación en Laravel usando el patrón de repositorios, soy nuevo en Laravel, tengo claro los conceptos de rutas, controladores, modelos y vistas.

Pero ahora me solicitan aplicar el repository pattern en esta aplicación y la información que he encontrado hasta ahora no es nada intuitiva.

Les agradezco si pueden ustedes ayudarme.

Tengo el siguiente caso:

Archivo routes.php:

Código PHP:

Route
::get('edit-user',function()
{
    return 
View::make('editUser');
});
Route::post('edit-submit','userProfile@editUser');
Route::get('profile','userProfile@profile'); 
Archivo editUser.blade.php en el directorio views:

Código PHP:

<form action="edit-submit"  method="post">
            
User name: <br>
            <
input name="username" type="text" value="{{Auth::User()->username}}"

 <
input class="btn btn-block btn-default" value="Aceptar" type="submit">                   
</
form

Archivo userProfile.php en el directorio controllers:

Código PHP:

class userProfile extends BaseController {

    public function 
__construct()
    {
        
$this->beforeFilter('auth');  //bloqueo de acceso
    
}
 
    public function 
profile()
    {
        return 
View::make('profile');
    }

    public function 
editUser()
    {   
        
$id Auth::id();
        
$user User::find($id);
        
$user->username Input::get('username');
        
        
$user->save();
    }


Lo que hace la aplicación:

Por url accedo a la ruta: edit-user, esta me llama la vista editUser.blade.php la cual me muestra el username del usuario autenticado en una caja de texto, en tal caja puedo editar este username, cuando le doy clic al boton submit de este formulario me lleva a la ruta: editSubmit la cual me ejecuta la función editUser del controlador userProfile, aquí esta función toma el nuevo username digitado en el formulario y lo guarda en la base de datos.

Lo que debo hacer:

Debo colocar el mayor código posible del controlador userProfile.php en un archivo llamado userProfileRepository.php en el directorio repositories con la clase userProfileRepository.

Mi pregunta es:

Si la función editUser() del controlador la pongo en un repositorio, cómo accedo a esta función? Cuál es la forma correcta para hacer uso de ese repositorio desde las rutas o desde cualquier otro controlador o repositorio.

Yo sigo atento aquí a su ayuda.

Muchas gracias.
  #2 (permalink)  
Antiguo 16/01/2015, 07:35
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 14 años, 10 meses
Puntos: 641
Respuesta: Patron de repositorios + Laravel

Checa este post, me parece muy bien explicado

http://heera.it/laravel-repository-pattern#.VLkOXSuG8eE

La idea es que el repositorio haga las consultas al modelo y luego uses una funcion construct en tu controlador

digamos que sería algo así

tienes esto en tu clase UserRepository

Código PHP:
    public function editUserName($id$username
    {    
        
$id Auth::id(); 
        
$user User::find($id); 
        
$user->username $username
         
        
$user->save(); 
    } 

y en tu controlador

Código PHP:
    public function __construct(UserRepository $user)
    {
        
$this->user $user;
    }

    public function 
editUser($id)
    {
        
$username Input::get('username'); //no se si esto se puede mandar al repository, sería cosa de probar
        
$user $this->user->editUserName($id$username);
        return 
View::make('user.profile');
    } 
Bueno creo que esa es la idea. Igual si lees el tutorial lo entenderás muy bien.
  #3 (permalink)  
Antiguo 16/01/2015, 20:22
Avatar de GendeDios  
Fecha de Ingreso: mayo-2007
Ubicación: Paraiso de America
Mensajes: 135
Antigüedad: 16 años, 11 meses
Puntos: 10
Respuesta: Patron de repositorios + Laravel

Muchas gracias memoadian. Tu ilustración me reveló justo lo que estaba buscando: Llamar a una función de un repositorio desde un controlador. Que tengas muchos exitos.

Etiquetas: laravel, patron
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:56.