Hm, nu kan jag inte php särskilt bra, och jag har inget svar på din fråga rakt av, men jag ser ett uppenbart brott mot MVC: din model är konstig. Controllern ska fylla din model med data, just nu är din model helt självgående med databaskoppling och sql-fråga - du tappar lite av poängen med MVC då.
Hej,
Som rubriken lyder sitter jag och har pillat på en MVC. Är ganska ny inom detta med OOP programmering, så ni vet.
jag har du en MVC, som har uppbyggnaden med mappar och filer direkt på rooten som ser ut så här:
Config (datasbaskopplingar och databasanslutning)
controllers (styr varje enskild sida)
libs (Mycket bas grejer, alla Bas kontrollers finns här, View, database, bootstrap, session, model, controller)
Model (när sidan du e på jobbar med databasen då kopplas kontrollen till modelen.)
public (styles och sånt)
views ( gör så något visas(här har sen varje sida sin mapp t.ex. index har en med fil index, och about har en som heter about med filen index.)
sen lösa filer har jag en index.php fil som (ska göra så index.php vissar här är problemet), och en fin .htaccess
men problemet är nu att jag vill i index alltså startsidan, som man kan se, så ska jag hämta data till den sidan från en databas (det som ska visas alltså) men detta hämtas från en mobel som heter index_model.php i mappen models.
men det är Bootstrap, som visar/styr det hela kan man säga.
Bootstrap.php ser ut såhär (ligger i mappen libs)
<?php
class Bootstrap {
function __construct() {
$url = isset($_GET['url']) ? $_GET['url'] : null;
$url = rtrim($url, '/');
$url = explode('/', $url);
//print_r($url);
if (empty($url[0])) {
require 'controllers/index.php';
$controller = new Index();
$controller->index();
return false;
}
$file = 'controllers/' . $url[0] . '.php';
if (file_exists($file)) {
require $file;
} else {
$this->error();
}
$controller = new $url[0];
$controller->loadModel($url[0]);
// calling methods
if (isset($url[2])) {
if (method_exists($controller, $url[1])) {
$controller->{$url[1]}($url[2]);
} else {
$this->error();
}
} else {
if (isset($url[1])) {
if (method_exists($controller, $url[1])) {
$controller->{$url[1]}();
} else {
$this->error();
}
} else {
$controller->index();
}
}
}
function error() {
require 'controllers/error.php';
$controller = new Error();
$controller->index();
return false;
}
}
och index.pph (den som ligger ute ser ut såhära (
<?php
require 'config/paths.php';
require 'config/database.php';
require 'config/constants.php';
// Also spl_autoload_register (Take a look at it if you like)
function __autoload($class) {
require LIBS . $class .".php";
}
$app = new Bootstrap();
index_model.php (ligger i mappen models)
class Index_Model extends Model {
public function __construct() {
parent::__construct();
}
public function pageInfo(){
$sth = $this->db->prepare('SELECT * FROM pages WHERE page="index"');
$sth->execute();
return $sth->fetchAll();
}
}
Men hur ska jag nu gå till väga att få in modelen. så den e med i början, detta funkar bara när man skriver in (där de ligger nu) mvc.mycodez.se om detta ska funka nu med modelen så måste man skriva in mvc.mycodez.se/index
Hoppas ni förstår hur jag vill ha det :)
Mycket glad för snabba svar