CodeIgniter PHP Model Access "nie można zlokalizować określonego modelu"
Próbowałem załadować kilka modeli dla tej strony, którą buduję. Jednak z nieznanego powodu przyniesie następujący błąd:
An Error Was Encountered
Unable to locate the model you have specified: logon_model
Zrobiłem swoje badania. Problem polega na tym, że IC przetwarza nazwy plików małymi literami. Jednak zarówno mój plik, jak i wywołanie pliku są pisane małymi literami, jak pokazano tutaj:
echo "VALIDATING";
// Validation passed. Off we go to account info verification from AA's database. God help us all.
$this->load->model('logon_model');
echo "FOUND MODEL";
$res = $this->logon_model->verify_user($this->input->post('username'),$this->input->post('password'));
echo $this->input->post('username');
echo $this->input->post('password');
Wykonanie nie dociera do "znalezionego modelu", tym samym zatrzymuje się na ładowaniu modelu. Próbowałem użyć:
$this->load->model(site_url('logon_model'));
Bez wyniki. Musisz wspomnieć, że plik modelu jest prawidłowo umieszczony w odpowiednim folderze modelu ?
Jak mogę to naprawić ?EDIT: Nagłówek dla pliku modelu:
class Logon_model extends CI_Model {
....
13 answers
Podczas tworzenia modeli, musisz umieścić plik w application/models/
i nazwać plik małymi literami logon_model.php
logon_model.php
powinien zawierać:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Logon_model extends CI_Model
{
public function __construct()
{
parent::__construct();
}
...
Teraz, co można zrobić, aby sprawdzić, czy twój model aplikacji jest osiągalny, to spróbować otworzyć go w przeglądarce - tak jak:
http://example.org/application/models/logon_model.php
Jeśli widzisz tekst brak bezpośredniego dostępu do skryptu oznacza to, że trafiłeś w odpowiedni plik (jeśli masz wątpliwości, spróbuj napisać coś innego w exit() w pierwszej linii).
Po drugie, aby załadować model w kontrolerach, powinieneś być w stanie zrobić tak:
public function index()
{
$this->load->model('logon_model');
...
}
Jeśli wszystko powyżej sprawdzi się zgodnie z oczekiwaniami, zacznę sprawdzać uprawnienia do plików i / lub ewentualnie dowiązania symboliczne, jeśli je używasz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-10 09:32:48
Używam codeigniter 3+. Miałem ten sam problem i w moim przypadku zmieniłem nazwę pliku modelu zaczynając od uppser case.
Logon_model.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-19 12:15:54
Oto, jak powinna wyglądać modelka: upewnij się, że twoja jest taka.
<?php
class Logon_model extends CI_Model {
function __construct()
{
parent::__construct();
}
function myFunc()
{
// do something
}
}
Zwróć uwagę na nazwę klasy z dużymi literami.
Aby go załadować użyj:
$this->load->model('logon_model');
Zwróć uwagę na małe litery.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-22 14:09:52
W CodeIgniter 3.0-dev (get it from github) to nie działa, ponieważ CI jest wyszukiwaniem jako pierwsza wielka litera.
Możesz znaleźć kod na system / core / Loader.php linia 282 lub poniżej:
$model = ucfirst(strtolower($model));
foreach ($this->_ci_model_paths as $mod_path)
{
if ( ! file_exists($mod_path.'models/'.$path.$model.'.php'))
{
continue;
}
require_once($mod_path.'models/'.$path.$model.'.php');
$CI->$name = new $model();
$this->_ci_models[] = $name;
return $this;
}
Oznacza to, że w aplikacji/modelach/Logon_mode musimy utworzyć plik o następującej nazwie.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-31 08:21:04
Rozwiązuję to w ten sposób:
- zmieniam nazwę pliku do Page_model.php
- Nazwa klasy do rozszerzenia Page_model...
- włączam autoload:
$autoload['model'] = array('Page_model'=>'page');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 10:19:27
Pierwsza litera nazwy pliku i nazwy klasy musi być pisana wielkimi literami.
Twoja klasa modelu będzie
Class Logon_model extends CI_Model
A nazwa pliku będzie Logon_model.php
Dostęp do niego z twojego contoller jak
$this - > load - > model ('Logon_model');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-17 10:11:45
Modele muszą być nazwane i wywołane z pierwszą literą nazwy modelu wielką literą, a reszta małymi literami.
Na przykład: $this->load->model('Logon_model');
I:
class Logon_model extends CI_Model {
...
Ale masz rację co do nazwy pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-10 03:02:42
Dodaję do odpowiedzi @jakentus, poniżej to co mi się udało:
-
Zmień nazwę pliku w pakiecie models na
Logon_model.php
(pierwsza litera wielkiej litery, jak poprawnie powiedział @jakentus) -
Zmień nazwę klasy tak samo jak nazwa pliku tzn.
class Logon_model extends CI_Model
-
Zmień nazwę w metodzie load również jako
$this->load->model('Logon_model');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 10:17:35
Doświadczyłem tego samego problemu, ale naprawiłem go zmieniając moją aplikację / config / routes.plik php.
Dokonałem pewnych zmian w katalogach kontrolerów i zapomniałem wprowadzić je w pliku routes.
Wcześniej:
$route['application/apply'] = 'ex/application/account/create';
A teraz:
$route['application/apply'] = 'application/account/create';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-09 17:44:37
Zmiana nazwy modelu rozpoczynającego się od wielkich liter działa. Przykład: Login_model.php zamiast login_model.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-21 01:09:47
Musisz zmienić nazwę modelu pierwsza litera Wielka. w localhost mała litera działa poprawnie, ale online to nie działa. dla exa:
common_model.php
Zamieniono na
Common_model.php
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-01 09:19:56
Właśnie dodałem mój problem, który miałem:
$this->load->model("planning/plan_model.php");
I .php
nie powinno tam być, więc powinno być:
$this->load->model("planning/plan_model");
Mam nadzieję, że to komuś pomoże
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-05 16:25:29
Upewnij się:
- Pierwsza litera Wielka
- Nazwa klasy dokładna nazwa pliku
- Upewnij się, że plik kończy się na .rozszerzenie php
W moim przypadku miałem 1 i 2 poprawne, ale zapomniałem podać nazwę pliku .rozszerzenie php. Jak zapomniałem, nie mam pojęcia, ale to na pewno sprawiło, że ciężko mi było zrozumieć problem
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-27 08:12:27