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<?php
namespace Clases;
use \Model\ModeloModel;
class Modelo {
private $id;
private $nombre;
private $marca;
private $modelo;
function getId() {
return $this->id;
}
function getNombre() {
return $this->nombre;
}
function getMarca() {
return $this->marca;
}
function setId($id) {
$this->id = $id;
}
function setNombre($nombre) {
}
function setMarca($marca) {
$this->marca = $marca;
}
function __construct() {
switch($nargs){
case 1:
self::__construct0();
break;
case 2:
self::__construct1($args[0], $args[1],$args[2]);
break;
}
}
function __construct0() { }
function __construct1($xid, $xnombre, $xmarca) {
$this->id = $xid;
$this->marca = $xmarca;
}
public function equals(Modelo $obj){
return $this->nombre == $obj->nombre;
}
public function save(){
$this->modelo = new ModeloModel();
return ($this->id == 0) ? $this->modelo->guardame($this) : $this->modelo->modificame($this);
}
public function del(){
$this->modelo = new ModeloModel();
return $this->modelo->eliminame($this);
}
public function obtenerXBus($criterio){
$this->modelo = new ModeloModel();
return $this->modelo->buscador($criterio);
}
public function obtenerXMarcas($criterio){
$this->modelo = new ModeloModel();
return $this->modelo->obtenerXDataList($criterio);
}
public function obtenerPorId($id){
$this->modelo = new ModeloModel();
return $this->modelo->obtenerPorId($id);
}
}
ModelosController.php
Código PHP:
Ver original<?php
namespace Controller;
use \App\Controller;
use \App\Session;
use \Clases\Marca;
use \Clases\Modelo;
class ModelosController extends Controller
{
function __construct() {
parent::__construct();
}
public function index(){
if($this->checkUser()){
Session::set('mar', '');
Session
::set('p', isset($_GET['p']) ?
$_GET['p'] : 1); Session
::set('b',(isset($_POST['txtbuscador'])) ?
$_POST['txtbuscador'] : Session
::get('b')); $modelos =(Session
::get('b')!="") ?
$this->getPaginator()->paginar((new Modelo
)->obtenerXBus(Session
::get('b')), Session
::get('p')) : array(); "modelos" => $modelos,
"paginador" => $this->getPaginator()->getPages()
));
}
}
public function add(){
if($this->checkUser()){
Session
::set('mar', isset($_POST['txtmar']) ?
$_POST['txtmar'] : Session
::get('mar')); $marcas = (Session
::get('mar')!="") ?
(new Modelo
)->obtenerXMarcas(Session
::get('mar')) : array(); if (isset($_POST['btnaceptar'])) { if($this->checkDates()) {
$marca = (new Marca())->obtenerPorId($_POST['txtmar']);
$modelo = new Modelo(0,$_POST['txtnom'] , $marca);
$id = $modelo->save();
Session
::set("msg",(isset($id)) ?
"Modelo Creado" : Session
::get('msg')); header("Location:index.php?c=modelos&a=index"); }
}
'marcas' => $marcas
));
}
}
public function edit(){
if($this->checkUser()){
Session::set("id",$_GET['p']);
Session
::set('mar', isset($_POST['txtmar']) ?
$_POST['txtmar'] : Session
::get('mar')); $marcas = (Session
::get('mar')!="") ?
(new Modelo
)->obtenerXMarcas(Session
::get('mar')) : array(); if (Session
::get('id')!=null && isset($_POST['btnaceptar'])){ if($this->checkDates()) {
$marca = (new Marca())->obtenerPorId($_POST['txtmar']);
$modelo = new Modelo($_POST['hid'],$_POST['txtnom'] , $marca);
$id = $modelo->save();
Session
::set("msg",(isset($id)) ?
"Modelo Editado" : Session
::get('msg')); header("Location:index.php?c=modelos&a=index"); }
}
"modelo" => (new Modelo)->obtenerPorId(Session::get('id')),
'marcas' => $marcas
));
}
}
public function delete(){
if($this->checkUser()){
$modelo= (new Modelo)->obtenerPorId($_GET['p']);
$id = $modelo->del();
Session
::set("msg", (isset($id)) ?
"Modelo Borrado" : "No se pudo borrar el modelo"); header("Location:index.php?c=modelos&a=index"); }
}
}
private function checkDates(){
if(empty($_POST['txtnom']) || empty($_POST['txtmar'])){ Session::set("msg","Ingrese los datos obligatorios (*) para continuar.");
return false;
}
else {
return true;
}
}
private function checkUser(){
if(Session::get("log_in")!= null and Session::get("log_in")->getRol()->getNombre() == "ADMIN"){
return true;
}
else {
Session::set("msg","Debe ser administrador para acceder.");
$this->redirect(array('Main','index.php')); }
}
}
Pareciera que el problema esta en el constructor de Modelo.php pero no sé x_atrix
Espero respuestas y saludos