Mam główny plik index.php
<?php include("core/init.php"); switch($controller){ case 'index': break; } include($_SERVER['DOCUMENT_ROOT'] . 'li/controllers/' . $controller . '/' . $controller . '.php'); ?>
W którym jest dołączany plik core/init.php
<?php define("SCIEZKA",str_replace("\\", "/", dirname("core")) . "/"); // dirname(__FILE__); zwraca katalog w którym jest plik init.php include("models/m_template.php"); include("models/m_logowanie.php"); include("models/m_rejestracja.php"); $server = 'localhost'; $user = 'li_admin'; $pass = 'imperia'; $db = 'li'; require_once("core/core.php"); $Core = new Core($server,$user,$pass,$db); ?>
Z kolei w init.php jest dołączany plik core/core.php
<?php class Core { public $Template, $Log, $Database, $Rejestracja; function __construct($server, $user, $pass, $db) { $this->Database = new mysqli($server, $user, $pass, $db); $this->Database->set_charset('utf8'); include(STRONA . "models/m_template.php"); $this->Template = new Template(); include(STRONA . "models/m_logowanie.php"); $this->Log = new Login(); include(STRONA . "models/m_rejestracja.php"); $this->Rejestracja = new Register(); } function __destruct() { $this->Database->close(); } } ?>
A w nim models/m_template.php
<?php class Template { //public $zasoby; //private $zasoby = 'http://localhost/li/res/'; private $data; private $alertTypes; function __construct() { } function load($url) { // FUNKCJA DOŁĄCZAJĄCA PLIKI include($url); } function load_once($url) { // FUNKCJA DOŁĄCZAJĄCA PLIKI include_once($url); } function redirect($url) { // FUNKCJA DOŁĄCZAJĄCA PLIKI } function setAlertTypes($types){ // FUNKCJA USTAWIAJĄCA TYPY ALERTÓW $this->alertTypes = $types; } function setAlert($value, $type = null){ // FUNKCJA USTAWIAJĄCA KOMUNIKAT (ALERT) if($type == ''){ $type = $this->alertType[0]; } $_SESSION[$type][] = $value; //zapisujemy wartość do zmiennej sesjiw której kluczem jest typ alertu. } function getAlerts(){ // FUNKCJA WYŚWIETLAJĄCA ALERT W POSTACI LISTY PUNKTOWANEJ $data = ''; foreach($this->alertTypes as $alert){ // alertTypes przechowuje tablicę w której są typy alertów. foreach($_SESSION[$alert] as $value){ //foreach przeanalizuje zmienną sesji której kluczem jest jeden z typów alertu i wypisze je w postaci listy $data .= '<li class="' . $alert . '">' . $value .'</li>'; } } } return $data; } function setData($name, $value) { // FUNKCJA USTAWIAJĄCA DANE } function getData($name) { // FUNKCJA WYŚWIETLAJĄCA DANE return $this->data[$name]; } else { return ''; } } function makeLink($ctrl, $view, $action = NULL) { if($action == NULL) { return 'index.php?cltr='.$ctrl.'&view='.$view.''; } else { return 'index.php?cltr='.$ctrl.'&view='.$view.'&action='.$action.''; } } } ?>
W głównym pliku index dołączam również kontroller (controllers/index/index.php)
<?php $Core->Template->load_once(STRONA . 'views/templates/' . $controller . '/header.php'); //NAGŁÓWEK ŁADUJĘ METODĄ KLASY TEMPLATE KTÓRA ZOSTAŁA ZAINICJOWANA (STWORZONA) W KONSTRUKTORZE KLASY CORE switch($view){ case 'v_rejestracja': $Core->Template->setData('reg_login', $_POST['login']); $Core->Template->setData('reg_email', $_POST['email']); if($Core->Rejestracja->checkRegisterData($_POST['login'], $_POST['email'], $_POST['haslo'], $_POST['p_haslo']) && $Core->Rejestracja->checkUsername($_POST['login'])){ $type = 1; $Core->Rejestracja->register($_POST['login'], $_POST['email'], $_POST['haslo'], $type); $Core->Template->redirect(STRONA . 'index.php'); } else { $Core->Template->load_once(STRONA . 'views/index/v_rejestracja.php'); } } else { $Core->Template->load_once(STRONA . 'views/index/v_rejestracja.php'); } break; } $Core->Template->load_once(STRONA . 'views/' . $controller . '/' . $view . '.php'); //TU W TEN SAM SPOSÓB ŁADUJĘ WIDOK $Core->Template->load_once(STRONA . 'views/templates/' . $controller . '/footer.php'); ?>
Gdy w linku występuje index.php?ctrl=index&view=v_rejestracja to dołączany zostaje widok views/index/v_rejestracja.php... W kodzie poniżej komentarzami zaznaczyłem błędy
<div id="content"> <p> <?php $alerts = $this->getAlerts(); //UŻYWAM $this-> BO ZAŁADOWAŁEM TEN PLIK METODĄ KLASY TEMPLATE, A FUNKCJA getAlerts(); NALEŻY DO TEJ KLASY ALE TU WYRZUCA BŁĄD SCREEN'A WKLEJĘ PONIŻEJ. if($alerts != '') { } ?> </p> <p> <form action="" method="post" id="login"> <table border="0" cellpadding="4"> <tr><td>Login: </td><td><input id="login" name="login" size="50" maxlength="50" value="<?php echo $this->getData('reg_login'); //TU PEWNIE TEŻ WYRZUCI BŁĄD ?>" /></td></tr> <tr><td>Email: </td><td><input id="email" name="email" size="50" maxlength="50" value="<?php echo $this->getData('reg_email'); ?>" /></td></tr> <tr><td>Hasło: </td><td><input type="password" id="haslo" name="haslo" size="20" maxlength="20" /></td></tr> <tr><td>Powtórz hasło: </td><td><input type="password" id="p_haslo" name="p_haslo" size="20" maxlength="20" /></td></tr> <td></td> <tr><td><input type="submit" value="Wyślij" /></td><td><input type="reset" value="Reset" /></td></tr> </table> </form> </p> </div>
Screen tego błędu:
SCREEN
na te teksty na screen'ie typu "ctrl jest" nie zwracajcie uwagi. Sprawdzałem nimi czy dołącz mi wszystkie pliki

Czym to może być spowodowane? Bardzo zależy mi na odpowiedzi, bo bez tego dalej nie ruszę
