Модели не загружаются на мультимодуль phalcon

Я пытаюсь реализовать мультимодуль phalcon с пространством имен. нормально работает. но модели не загружаются из своего местоположения (/apps/models/). если я вставлю все мои файлы моделей в контроллер dir, то он заработает. Это должно загрузить от моделей dir. как я мог решить эту проблему.

[Передний модуль]

$loader->registerNamespaces(
array(
'Multiple\Frontend\Controllers' => '../apps/frontend/controllers/',
'Multiple\Frontend\Models'      => '../apps/frontend/models/',
 ));

[Модель Блогов]

namespace Multiple\Frontend\Controllers;
use Phalcon\Mvc\Model;
class Blogs extends Model{}    

я также пытаюсь "namespace Multiple\Frontend\Models;" но не успех получить ошибку как:

Fatal error: Uncaught Error: Class 'Multiple\Frontend\Controllers\News' not found in C:\xampp\htdocs\pm\apps\frontend\controllers\IndexController.php:38 Stack trace: #0 [internal function]:

у меня есть мой диспетчер, как:

public function registerServices(DiInterface $di)
{
    # Registering a dispatcher
    $di->set('dispatcher', function () {
        $dispatcher = new Dispatcher();
        $dispatcher->setDefaultNamespace("Multiple\Frontend\Controllers");
        return $dispatcher;
});

я думаю, что ошибка: "Ошибка: класс" Multiple \ Frontend \ Controllers \ Blogs "не найден" по этой причине пространство имен по умолчанию - frontend \ controller. как это решить? пожалуйста

2 ответа

Решение

Я думаю, что вам нужно добавить одну дополнительную строку в вашем контроллере, как...

namespace Multiple\Frontend\Controllers;
use Phalcon\Mvc\Controller;

use Multiple\Frontend\Models\Blogs as Blogs; //** This line should Add **//

class IndexController extends Controller
{
public function indexAction()
{}
}

Вы должны загружать свои модели явно за пределами модулей. RegisterNamespaces попадает в этот модуль только тогда, когда этот модуль попадает в диспетчер.

На самом деле я думал, что у вас есть проблемы с использованием моделей в разных модулях. Если у вас есть эта ошибка Multiple\Frontend\Controllers\News то, что это не может быть найдено, это означает, что у вас просто нет правильного оператора использования, и он ищет класс в тех же пространствах имен, просто добавьте use Multiple\Frontend\Models\News, Вы даже используете какую-либо IDE?

Другие вопросы по тегам