在创建项目时,如果参数指定 --enable-webtools,则会在入口文件的同级生成一个webtool.php文件;

如果使用配置的域名访问域名/webtool.php则会出现可视化的界面,来帮助生成代码。

此流程非必须,且在上线代码中,应配置web服务器禁止访问该文件,或者直接移除。

初次使用可能会有如下问题:

1、提示目录未找到,请在应用配置加入目录配置,这里以控制器目录为例

Sorry, Phalcon WebTools doesn't know where the controllers directory is.
Please add the valid path for controllersDir in the application section.

核心代码在phalcon-devtools\\src\\Providers\\ConfigProvider.php::register,默认加载的APP_PATH . '/config/config.php',在application中加入controllersDir配置即可,该配置路径必须已经创建好

可视化界面代码生成,主要涉及controllersmodelsviewsmigrations,因此均要配置指定代码生成在目录哪个目录下;

    'application' => [
        'appDir'         => APP_PATH . '/',
        'controllersDir'      => APP_PATH . '/modules/frontend/controllers/',
        'namespaceController'      => 'Modules/Modules/Frontend/Controllers',
        'namespaceModel'      => 'Modules/Common/Models',
        'modelsDir'      => APP_PATH . '/common/models/',
        'migrationsDir'  => APP_PATH . '/migrations/',
        'cacheDir'       => BASE_PATH . '/cache/',
        'baseUri'        => '/',
        'viewsDir'      => APP_PATH . '/modules/frontend/views/',
    ],

这里是我测试多模块项目modules时的配置,可以运行生成controllersmodelsviewsmigrations,其中namespaceModelnamespaceController相关的配置是我改动了phalcon-devtools源码来避免代码生成的表单里,命名空间需要手动去填的问题;对应改动如下:
一、控制器生成:phalcon-devtools\src\Web\Tools\Controllers\ControllersController.php 215行后加上

# 命名空间
$namespace = $this->di->get('config')->application->namespaceController;

$this->tag->setDefault('namespace', $namespace);

二、模型生成:phalcon-devtools\src\Web\Tools\Controllers\ModelsController.php 259行后加上

# 命名空间
$namespace = $this->di->get('config')->application->namespaceModel;

$this->tag->setDefault('namespace', $namespace);

三、CURD脚手架(可忽略,因为现在流行前后端分离):phalcon-devtools\src\Web\Tools\Controllers\ScaffoldController.php 95行

# 命名空间
$namespace = $this->di->get('config')->application->namespaceModel;

$this->tag->setDefault('modelsNamespace', $namespace);

文艺の张
19 声望2 粉丝

愿自己永远不缺从头再来的勇气和激情。