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 {

....
Author: Alexandre Bolduc, 2011-11-10

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.

 59
Author: Repox,
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

 53
Author: jakentus,
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.

 8
Author: wclark,
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

 4
Author: ialbescu,
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:

  1. zmieniam nazwę pliku do Page_model.php
  2. Nazwa klasy do rozszerzenia Page_model...
  3. włączam autoload: $autoload['model'] = array('Page_model'=>'page');
Działa dobrze.. Mam nadzieję, że pomoże.
 4
Author: Gabriel Glauber,
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');

 3
Author: Avnish alok,
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.

 2
Author: Jonathan Ratliff,
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:

  1. Zmień nazwę pliku w pakiecie models na Logon_model.php (pierwsza litera wielkiej litery, jak poprawnie powiedział @jakentus)

  2. Zmień nazwę klasy tak samo jak nazwa pliku tzn.

    class Logon_model extends CI_Model

  3. Zmień nazwę w metodzie load również jako

    $this->load->model('Logon_model');

Mam nadzieję, że to pomoże. Szczęśliwego kodowania. :)
 2
Author: Atul O Holic,
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';

 1
Author: Suleiman Umar,
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

 1
Author: user3642940,
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
 0
Author: sandeep kumar,
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

 0
Author: Frank Conry,
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ę:

  1. Pierwsza litera Wielka
  2. Nazwa klasy dokładna nazwa pliku
  3. 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

 0
Author: theTypan,
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