scaffold_controller.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. * Controlador base para la construcción de CRUD para modelos rápidamente
  4. *
  5. * @category Kumbia
  6. * @package Controller
  7. */
  8. class ScaffoldController extends AdminController
  9. {
  10. /** @var string Carpeta en views/_shared/scaffolds/ */
  11. public $scaffold = 'kumbia';
  12. /** @var string Nombre del modelo en CamelCase */
  13. public $model = '';
  14. /**
  15. * Resultados paginados
  16. */
  17. public function index($page = 1)
  18. {
  19. $this->data = (new $this->model)->paginate("page: $page", 'order: id desc');
  20. }
  21. /**
  22. * Crea un Registro
  23. */
  24. public function crear()
  25. {
  26. if (Input::hasPost($this->model)) {
  27. $obj = new $this->model;
  28. //En caso que falle la operación de guardar
  29. if (!$obj->save(Input::post($this->model))) {
  30. Flash::error('Falló Operación');
  31. //se hacen persistente los datos en el formulario
  32. $this->{$this->model} = $obj;
  33. return;
  34. }
  35. return Redirect::to();
  36. }
  37. // Sólo es necesario para el autoForm
  38. $this->{$this->model} = new $this->model;
  39. }
  40. /**
  41. * Edita un Registro
  42. */
  43. public function editar($id)
  44. {
  45. View::select('crear');
  46. //se verifica si se ha enviado via POST los datos
  47. if (Input::hasPost($this->model)) {
  48. $obj = new $this->model;
  49. if (!$obj->update(Input::post($this->model))) {
  50. Flash::error('Falló Operación');
  51. //se hacen persistente los datos en el formulario
  52. $this->{$this->model} = Input::post($this->model);
  53. } else {
  54. return Redirect::to();
  55. }
  56. }
  57. //Aplicando la autocarga de objeto, para comenzar la edición
  58. $this->{$this->model} = (new $this->model)->find((int) $id);
  59. }
  60. /**
  61. * Borra un Registro
  62. */
  63. public function borrar($id)
  64. {
  65. if (!(new $this->model)->delete((int) $id)) {
  66. Flash::error('Falló Operación');
  67. }
  68. //enrutando al index para listar los articulos
  69. Redirect::to();
  70. }
  71. /**
  72. * Ver un Registro
  73. */
  74. public function ver($id)
  75. {
  76. $this->data = (new $this->model)->find_first((int) $id);
  77. }
  78. }