我正在使用本教程https://docs.zendframework.com/tutorials/getting-started/overview/创建相册模块。这个对我有用。
在项目内部,有/module/Album/config/module.config.php文件,其中包含路由。路由器位于阵列树内。如我以前的经验所示,将来每个项目(甚至每个模块)可以拥有数十条路线。
在此文档页面https://docs.zendframework.com/zend-router/routing/上,我找到了将路由器添加到模块的另一种方法。
// One at a time:
$route = Literal::factory([
'route' => '/foo',
'defaults' => [
'controller' => 'foo-index',
'action' => 'index',
],
]);
$router->addRoute('foo', $route);
与将路由存储在非常深的配置数组树中相比,这种方法对我来说更受欢迎。
所以,我的问题是:如前所述,我可以在哪里将php路由器代码放在配置树之外?这样的路由器文件应该在模块中的什么位置?
答案 0 :(得分:1)
在模块module.config.php
文件夹中config/
旁边,通常创建一个routes.config.php
。
我通过对user.routes.config.php
做类似roles.routes.config.php
的事情来进一步拆分它。您可能希望将front.routes.config.php
与admin.routes.config.php
一起使用。
最后由您决定。为了同事和未来的理智,请确保始终如一。
例如,我的项目中用户模块的配置:
这是一个模块,可以处理与用户直接相关的所有内容,因此就在其中。应该将其拆分成更多部分,但就目前而言,这是不必要的。
然后您将在Module.php
中加载所有此配置:
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements ConfigProviderInterface, AutoloaderProviderInterface
{
/**
* @return array
*/
public function getConfig()
{
$config = [];
$path = __DIR__
. DIRECTORY_SEPARATOR . '..'
. DIRECTORY_SEPARATOR . 'config'
. DIRECTORY_SEPARATOR . '*.php';
foreach (glob($path) as $filename) {
$config = array_merge_recursive($config, include $filename);
}
return $config;
}
/**
* @return array
*/
public function getAutoloaderConfig()
{
return [
'Zend\Loader\StandardAutoloader' => [
'namespaces' => [
__NAMESPACE__ => __DIR__ . DIRECTORY_SEPARATOR . 'src',
],
],
];
}
}
请记住,最终的实施取决于您自己。但是,制定一个标准并坚持下去。如果您到处都有不同的标准,您会发疯。