Skip to content

Instantly share code, notes, and snippets.

@yickson
Last active May 21, 2016 00:32
Show Gist options
  • Save yickson/953fc53b627137acdb5060dd21c30f8c to your computer and use it in GitHub Desktop.
Save yickson/953fc53b627137acdb5060dd21c30f8c to your computer and use it in GitHub Desktop.
Subida de imagen

##Subir una imagen en KumbiaPHP -> Bailando con el código

Para subir una imagen correctamente en KumbiaPHP se debe seguir el formato MVC, es decir modelo, vista, controlador. En la vista debemos crear un archivo con un formulario simple con la opción de subir una imagen.

Este Gist solo es un ejemplo de como se puede subir una imagen correctamente en nuestra aplicación web. Cuenta con el modelo que realiza el trabajo fuerte de utilizar la imagen en subirla al servidor web, luego una vista con un formulario simple que tiene habilitado la subida de ficheros, y luego el controlador quien da las órdenes de como realizar el proceso.

Este gist está utilizando la versión RC 1.0 de KumbiaPHP por eso no se utiliza el Load::model('mi modelo');

En este caso se ha utilizado el ejemplo de una noticia donde se trabaja con un titulo, contenido, y una imagen.

<?php
class AdministradorController extends AppController
{
//...
public function subir()
{
//subir noticias
if(Input::hasPost('titulo')){
$titulo = Input::post('titulo');
$contenido = Input::post('contenido');
$imagen = 'imagen';
$respuesta = (new Noticias)->subida($titulo, $contenido, $imagen);
if($respuesta == 1){
Flash::valid('Se ha subido exitosamente la noticia');
Input::delete();
}
else{
Flash::error('No se ha podido subir la noticia');
}
}
}
//Metodo para modificar la noticia toma en cuenta si cambia o no la imagen
public function modificar($id)
{
if(!(new Usuario)->logged()){
Redirect::to('administrador/entrar');
}
$noticias = (new Noticias)->find($id);
//se verifica si se ha enviado el formulario (submit)
if(Input::hasPost('id')){
$noticias->titulo = Input::post('titulo');
$noticias->contenido = Input::post('contenido');
if($_FILES['imagen']){
$nombre = "imagen";
$noticias->imagen = (new Noticias)->modimagen($id, $nombre);
}
if($noticias->save()){
Flash::valid('Se ha modificado exitosamente');
//enrutando por defecto al index del controller
return Redirect::to('administrador/noticia');
} else {
Flash::error('Falló Operación');
}
} else {
//Aplicando la autocarga de objeto, para comenzar la edición
$this->noticias = (new Noticias)->find($id);
}
}
}
?>
<?php
class Noticias extends ActiveRecord
{
public function subida($titulo, $contenido, $archivo)
{
$imagen = Upload::factory($archivo, 'image');
$imagen->setExtensions(array('jpg', 'png', 'gif'));
if($imagen->isUploaded()){
$nombre = $imagen->saveRandom();
$ruta = PUBLIC_PATH.'img/upload/'.$nombre;
$noticia = (new Noticias);
$noticia->titulo = $titulo;
$noticia->contenido = $contenido;
$noticia->imagen = $ruta;
$noticia->save();
return 1;
}
else{
return 2;
}
}
public function modimagen($id, $archivo)
{
$noticia = (new Noticias)->find($id);
if($noticia->imagen){
$path = "/home/miruta/public_html" . $noticia->imagen; //Colocar la ruta absoluta donde se encuentra la imagen en tu servidor
unlink($path);
}
$imagen = Upload::factory($archivo, 'image');
$imagen->setExtensions(array('jpg', 'png', 'gif'));
if($imagen->isUploaded()){
$nombre = $imagen->saveRandom();
$ruta = PUBLIC_PATH.'img/upload/'.$nombre;
return $ruta;
}
else {
//
}
}
public function borrarimagen($noticia)
{
$path = "/home/oceancar/public_html" . $noticia->imagen;
unlink($path);
}
}
?>
<div class="row">
<div class="col-sm-3"></div>
<div class="col-sm-6 col-xs-12">
<?php View::content(); ?>
<?php echo Form::openMultipart() ?>
<div class="form-group">
<label>Titulo</label>
<?php echo Form::text('titulo', 'class="form-control"') ?>
<label>Contenido</label>
<?php echo Form::textarea('contenido', 'class="form-control ckeditor"') ?>
<label>Imagen</label>
<?php echo Form::file('imagen') ?>
<br/>
<?php echo Form::submit('Crear noticia', 'class="form-control btn btn-primary"') ?>
</div>
<?php echo Form::close() ?>
<?php echo Html::link('administrador/noticia', 'Panel de noticias', 'class="btn btn-success"') ?>
<?php echo Html::link('administrador/ver', 'Panel de clientes', 'class="btn btn-primary"') ?>
</div>
<div class="col-sm-3"></div>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment