Ver Mensaje Individual
  #15 (permalink)  
Antiguo 11/01/2016, 20:51
Avatar de detective_jd
detective_jd
 
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: Evitar eliminar registros con php

Pero cuando quiero hacer parecido con Modelo me da este error:

Fatal error: Call to a member function getId() on a non-object in /var/www/html/amnesia_1/Model/ModeloModel.php on line 57

No me toma la marca que le paso por parámetro, te paso el código, puede que sea una tontería y no me doy cuenta:

Modelo.php

Código PHP:
Ver original
  1. <?php
  2. namespace Clases;
  3. use \Model\ModeloModel;
  4. class Modelo {
  5.     private $id;
  6.     private $nombre;
  7.     private $marca;
  8.     private $modelo;
  9.     function getId() {
  10.         return $this->id;
  11.     }
  12.     function getNombre() {
  13.         return $this->nombre;
  14.     }
  15.     function getMarca() {
  16.         return $this->marca;
  17.     }
  18.     function setId($id) {
  19.         $this->id = $id;
  20.     }
  21.     function setNombre($nombre) {
  22.         $this->nombre = strtoupper($nombre);
  23.     }
  24.     function setMarca($marca) {
  25.         $this->marca = $marca;
  26.     }
  27.     function __construct() {
  28.         $args = func_get_args();
  29.         $nargs = func_num_args();
  30.         switch($nargs){
  31.             case 1:
  32.                 self::__construct0();
  33.                 break;
  34.             case 2:
  35.                 self::__construct1($args[0], $args[1],$args[2]);
  36.                 break;
  37.         }
  38.     }
  39.     function __construct0() { }
  40.     function __construct1($xid, $xnombre, $xmarca) {
  41.         $this->id = $xid;
  42.         $this->nombre = strtoupper($xnombre);
  43.         $this->marca = $xmarca;
  44.     }
  45.     public function equals(Modelo $obj){
  46.         return $this->nombre == $obj->nombre;                
  47.     }
  48.     public function save(){
  49.         $this->modelo = new ModeloModel();
  50.         return ($this->id == 0) ? $this->modelo->guardame($this) : $this->modelo->modificame($this);
  51.     }
  52.     public function del(){
  53.         $this->modelo = new ModeloModel();
  54.         return $this->modelo->eliminame($this);
  55.     }
  56.     public function obtenerXBus($criterio){
  57.         $this->modelo = new ModeloModel();
  58.         return $this->modelo->buscador($criterio);
  59.     }
  60.     public function obtenerXMarcas($criterio){
  61.         $this->modelo = new ModeloModel();
  62.         return $this->modelo->obtenerXDataList($criterio);
  63.     }
  64.     public function obtenerPorId($id){
  65.         $this->modelo = new ModeloModel();
  66.         return $this->modelo->obtenerPorId($id);
  67.     }
  68. }

ModelosController.php

Código PHP:
Ver original
  1. <?php
  2. namespace Controller;
  3. use \App\Controller;
  4. use \App\Session;
  5. use \Clases\Marca;
  6. use \Clases\Modelo;
  7. class ModelosController extends Controller
  8. {
  9.     function __construct() {
  10.         parent::__construct();
  11.     }
  12.     public function index(){
  13.         if($this->checkUser()){
  14.             Session::set('mar', '');
  15.             Session::set('p', isset($_GET['p']) ? $_GET['p'] : 1);
  16.             Session::set('b',(isset($_POST['txtbuscador'])) ? $_POST['txtbuscador'] : Session::get('b'));
  17.             $modelos =(Session::get('b')!="") ? $this->getPaginator()->paginar((new Modelo)->obtenerXBus(Session::get('b')), Session::get('p')) : array();
  18.             $this->redirect(array("index.php"),array(
  19.                 "modelos" => $modelos,
  20.                 "paginador" => $this->getPaginator()->getPages()
  21.             ));        
  22.         }
  23.     }
  24.     public function add(){
  25.         if($this->checkUser()){
  26.             Session::set('mar', isset($_POST['txtmar']) ? $_POST['txtmar'] : Session::get('mar'));
  27.             $marcas = (Session::get('mar')!="") ? (new Modelo)->obtenerXMarcas(Session::get('mar')) : array();
  28.             if (isset($_POST['btnaceptar'])) {
  29.                 if($this->checkDates()) {
  30.                     $marca = (new Marca())->obtenerPorId($_POST['txtmar']);
  31.                     $modelo = new Modelo(0,$_POST['txtnom'] , $marca);
  32.                     $id = $modelo->save();
  33.                     Session::set("msg",(isset($id)) ? "Modelo Creado" : Session::get('msg'));
  34.                     header("Location:index.php?c=modelos&a=index");
  35.                     exit();
  36.                 }
  37.             }
  38.             $this->redirect(array('add.php'),array(
  39.                 'marcas' => $marcas
  40.             ));
  41.         }
  42.     }
  43.     public function edit(){
  44.         if($this->checkUser()){          
  45.             Session::set("id",$_GET['p']);
  46.             Session::set('mar', isset($_POST['txtmar']) ? $_POST['txtmar'] : Session::get('mar'));
  47.             $marcas = (Session::get('mar')!="") ? (new Modelo)->obtenerXMarcas(Session::get('mar')) : array();
  48.             if (Session::get('id')!=null && isset($_POST['btnaceptar'])){                                        
  49.                 if($this->checkDates()) {
  50.                     $marca = (new Marca())->obtenerPorId($_POST['txtmar']);
  51.                     $modelo = new Modelo($_POST['hid'],$_POST['txtnom'] , $marca);
  52.                     $id = $modelo->save();
  53.                     Session::set("msg",(isset($id)) ? "Modelo Editado" : Session::get('msg'));
  54.                     header("Location:index.php?c=modelos&a=index");
  55.                     exit();
  56.                 }
  57.             }
  58.             $this->redirect(array('edit.php'),array(
  59.                 "modelo" => (new Modelo)->obtenerPorId(Session::get('id')),
  60.                 'marcas' => $marcas
  61.             ));
  62.         }
  63.     }
  64.     public function delete(){
  65.         if($this->checkUser()){
  66.             if (isset($_GET['p'])){
  67.                 $modelo= (new Modelo)->obtenerPorId($_GET['p']);
  68.                 $id = $modelo->del();
  69.                 Session::set("msg", (isset($id)) ? "Modelo Borrado" : "No se pudo borrar el modelo");
  70.                 header("Location:index.php?c=modelos&a=index");
  71.             }                          
  72.         }
  73.     }
  74.     private function checkDates(){
  75.         if(empty($_POST['txtnom']) || empty($_POST['txtmar'])){
  76.             Session::set("msg","Ingrese los datos obligatorios (*) para continuar.");
  77.             return false;
  78.         }
  79.         else {
  80.             return true;
  81.         }
  82.     }
  83.     private function checkUser(){
  84.         if(Session::get("log_in")!= null and Session::get("log_in")->getRol()->getNombre() == "ADMIN"){
  85.             return true;
  86.         }
  87.         else {
  88.             Session::set("msg","Debe ser administrador para acceder.");
  89.             $this->redirect(array('Main','index.php'));
  90.         }
  91.     }
  92. }

Pareciera que el problema esta en el constructor de Modelo.php pero no sé x_atrix

Espero respuestas y saludos