Модели не загружаются на мультимодуль 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?