Skip to content

Instantly share code, notes, and snippets.

@galileoguzman
Last active August 29, 2015 14:17
Show Gist options
  • Save galileoguzman/7e0623286073f52fdb8b to your computer and use it in GitHub Desktop.
Save galileoguzman/7e0623286073f52fdb8b to your computer and use it in GitHub Desktop.
Controller Post Laravel
<?php
class ArticuloController extends BaseController {
public function index()
{
$articulos = Articulo::orderBy('created_at', 'DESC')->get();
$total = Articulo::count();
// load the view and pass the nerds
return View::make('articulos.index')->with(array('articulos' => $articulos, 'total' => $total));
}
public function create()
{
return View::make('articulos.create');
}
public function store()
{
$carpetaDestino = "uploads";
$nombreImagen;
$rules = array(
'nombre' => 'required',
'cuerpo' => 'required',
'imagen_destacada' => 'required'
);
$validator = Validator::make(Input::all(), $rules);
if(Input::hasFile('imagen_destacada')) {
$nombreImagen = $this->generar_clave(15). '.' . Input::file('imagen_destacada')->getClientOriginalExtension();
}
if ($validator->fails()) {
return Redirect::to('articulos/create')
->withErrors($validator)
->withInput(Input::except('password'));
} else {
$articulo = new Articulo;
$articulo->nombre = Input::get('nombre');
$articulo->cuerpo = preg_replace('(\n)', '<br/><br/>', Input::get('cuerpo'));
$articulo->imagen_destacada = $nombreImagen;
$articulo->slug = $this->crear_slug(Input::get('nombre'));
$articulo->etiquetas = Input::get('etiquetas');
$articulo->id_author = Auth::id();;
if($articulo->save()){
Input::file('imagen_destacada')->move($carpetaDestino,$nombreImagen);
}
Session::flash('message', 'Successfully created article!');
return Redirect::to('articulos');
}
}
public function show($id)
{
$articulo = Articulo::find($id);
return View::make('articulos.show')->with('articulo', $articulo);
}
public function edit($id)
{
$articulo = Articulo::find($id);
return View::make('articulos.edit')
->with('articulo', $articulo);
}
public function update($id)
{
$carpetaDestino = "uploads";
$nombreImagen;
$rules = array(
'nombre' => 'required',
'cuerpo' => 'required',
);
$validator = Validator::make(Input::all(), $rules);
if(Input::hasFile('imagen_destacada')) {
$nombreImagen = $this->generar_clave(15). '.' . Input::file('imagen_destacada')->getClientOriginalExtension();
}else{
$articulo = Articulo::find($id);
$nombreImagen = $articulo->imagen_destacada;
}
if ($validator->fails()) {
return Redirect::to('articulos/' . $id . '/edit')
->withErrors($validator)
->withInput(Input::except('password'));
} else {
$articulo = Articulo::find($id);
$articulo->nombre = Input::get('nombre');
$articulo->cuerpo = preg_replace('(\n)', "<br/>", Input::get('cuerpo'));
$articulo->etiquetas = Input::get('nombre');
$articulo->imagen_destacada = $nombreImagen;
$articulo->save();
Session::flash('message', 'Successfully updated article!');
return Redirect::to('articulos');
}
}
public function destroy($id)
{
$articulo = Articulo::find($id);
$articulo->delete();
Session::flash('message', 'Successfully deleted the article!');
return Redirect::to('articulos');
}
public function crear_slug($string)
{
$characters = array("Á" => "A", "Ç" => "c", "É" => "e", "Í" => "i", "Ñ" => "n", "Ó" => "o", "Ú" => "u", "á" => "a", "ç" => "c", "é" => "e", "í" => "i", "ñ" => "n", "ó" => "o", "ú" => "u", "à" => "a", "è" => "e", "ì" => "i", "ò" => "o", "ù" => "u");
$string = strtr($string, $characters);
$string = strtolower(trim($string));
$string = preg_replace("/[^a-z0-9-]/", "-", $string);
$string = preg_replace("/-+/", "-", $string);
if(substr($string, strlen($string) - 1, strlen($string)) === "-")
{
$string = substr($string, 0, strlen($string) - 1);
}
return $string;
}
private function generar_clave($longitud){
$cadena="[^A-Z0-9]";
return substr(preg_replace($cadena, "", md5(rand())) .
preg_replace($cadena, "", md5(rand())) .
preg_replace($cadena, "", md5(rand())),
0, $longitud);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment