如果你刷新页面,你将发现另一个报错:PhalconDiException: Service 'view' wasn't found in the dependency injection container。之所以有这样的报错是因为每个模块都有自己的配置目录,我们需要创建对应的文件。进入modules/Frontend/目录,新建一个目录名为Config。
之所以使用首字母大写,因为它更容易在命名空间中读取和加载。
现在,在modules/Frontend/Config/目录创建包含如下代码,名为config.php的文件:
<?php
$config = require __DIR__.'/../../../config/config.php';
$module_config = array(
'application' => array(
'controllersDir' => __DIR__ . '/../Controllers/',
'modelsDir' => __DIR__ . '/../Models/',
'viewsDir' => __DIR__ . '/../Views/',
'baseUri' => '/',
'cryptSalt' => '5up3r5tr0n6p@55',
'publicUrl' => 'http://www.learning-phalcon.localhost'
));
$config->merge($module_config);
return $config;
在第一行中,我们将全局配置文件的内容分配给$config变量。然后,我们设置模块配置,并将这些信息合并到我们的全局$config变量中。 接下来,让我们在同一个文件夹(modules/Frontend/Config/)中创建路由和服务文件:
services.php:
<?php
$di['dispatcher'] = function () use ($di) {
$eventsManager = $di->getShared('eventsManager');
$dispatcher = new PhalconMvcDispatcher();
$dispatcher->setEventsManager($eventsManager);
$dispatcher->setDefaultNamespace('AppFrontendControllers');
return $dispatcher;
};
$di['url']->setBaseUri(''.$config->application->baseUri.'');
$di['view'] = function () {
$view = new PhalconMvcView();
$view->setViewsDir(__DIR__ . '/../Views/Default/');
$view->registerEngines(array(
".volt" => 'voltService'
));
return $view;
};
在services.php文件中,我们重写了DI的URL和dispatcher组件,我们创建了一个使用全局服务文件(config/services.php)中声明的voltService作为自定义视图的服务。
routing.php:
<?php
$router = new PhalconMvcRouter(false);
$router->clear();
$router->add('/', array(
'module' => 'frontend',
'controller' => 'index',
'action' => 'index'
));
return $router;
我们需要在这里有一个routing.php文件,因为我们将为前端模块创建自定义路由。 接下来我们需要的是一个控制器。 一般来说,创建基本文件和所有其他文件以扩展基础是一个很好的做法。 这样,您将避免代码重复。 当然,你可以使用其他方法特性,但对于这个项目,我们将在大部分情况下使用一个基本文件。
因此,让我们在modules/Frontend/中创建Controllers目录,并在modules/Frontend/Controllers/目录中创建一个空白的基本控制器:
cd modules/Frontend/
mkdir Controllers
touch Controllers/BaseController.php
现在,将如下代码写到BaseController.php文件中:
然后,以下面的代码创建另一个名为IndexController.php的文件:
<?php
namespace AppFrontendControllers;
class IndexController extends BaseController
{
public function indexAction()
{
}
}
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。