phalcon框架webtools在创build模型,视图和控制器时不起作用

我试图让phalcon webtools工作时遇到一些问题。

当使用命令行开发工具,我可以创build控制器和模型没有问题。

但是,webtools并不容易。

它正确显示已经创build的控制器和模型:

  • 控制器( http://img.zgserver.com/php/IRWPaVJ.png )
  • 模型( http://img.zgserver.com/php/rIbvbg9.png )

我也可以编辑它们( http://img.zgserver.com/php/orJweLl.png )。

显然,Db连接是好的,因为webtools显示数据库中的每个表:

  • 模型( http://img.zgserver.com/php/iOkZfyo.png )
  • 脚手架( http://img.zgserver.com/php/5ZLRuq5.png )

但是,当试图从Web界面创build一个控制器,我得到了下一个错误:

“请指定一个控制器目录”

尝试从数据库表创build模型时是相同的:

“数据库configuration不能从您的configuration文件加载”

或者当试图生成脚手架时:

“在configuration中找不到适配器,请指定一个configurationvariables[数据库] [适配器]”

我的app / config / config.php内容:

return new \Phalcon\Config(array( 'database' => array( 'adapter' => 'Mysql', 'host' => 'localhost', 'username' => 'phalcon', 'password' => 'phalcon', 'dbname' => 'phalcon', 'charset' => 'utf8', ), 'application' => array( 'controllersDir' => __DIR__ . '/../../app/controllers/', 'modelsDir' => __DIR__ . '/../../app/models/', 'viewsDir' => __DIR__ . '/../../app/views/', 'pluginsDir' => __DIR__ . '/../../app/plugins/', 'libraryDir' => __DIR__ . '/../../app/library/', 'cacheDir' => __DIR__ . '/../../app/cache/', 'baseUri' => '/phalconTest/', ) )); 

我的公共/ webtools.config.php内容:

 define('PTOOLS_IP', '192.168.248.135'); define('PTOOLSPATH', 'C:/phalcon-devtools'); 

我的公共/ webtools.php:

 use Phalcon\Web\Tools; require 'webtools.config.php'; require PTOOLSPATH . '/scripts/Phalcon/Web/Tools.php'; Tools::main(PTOOLSPATH, PTOOLS_IP); 

我正在运行Phalcon 1.3.4 – 用于PHP 5.4.0的Windows x86(VC9)

这似乎是一个webtools中的错误。

看看vendor/phalcon/devtools/scripts/Phalcon/Builder/Component.php
_getConfig函数。

快速和肮脏的解决方案是prepend ../ path

你需要改变app/config/config.php的第一行

defined('APP_PATH') || define('APP_PATH', realpath('..'));

为了增加一些答案,通过预先编辑../以及一些代码改变来编辑configPath,当modelPath被rtrimmed时已经忘记了一点'/'。

此外,代码将被更新和修复,但到目前为止,可以通过编辑your/path/phalcon-devtools/scripts/Phalcon/Builder/Model.php 。 找

 $modelsDir = rtrim(rtrim($modelsDir, '/'), '\\') . DIRECTORY_SEPARATOR; if ($this->isAbsolutePath($modelsDir) == false) { $modelPath = $path . DIRECTORY_SEPARATOR . $modelsDir; } else { // $modelPath = $modelsDir; // replace or ADD TO LINE ABOVE so it looks like BELOW: $modelPath = DIRECTORY_SEPARATOR . $modelsDir; } 

然后模型将与TKF的答案一起工作在webtools。 请享用。

像这样在webtools.config.php中应用更改:

 <?php if (!defined('PTOOLS_IP')) define('PTOOLS_IP', '192.168.'); if (!defined('PTOOLSPATH')) define('PTOOLSPATH', '/path/to/phalcon/devtools'); return array( 'application' => array( 'controllersDir' => __DIR__ . '/../../app/controllers/', 'modelsDir' => __DIR__ . '/../../app/models/', ), 'database' => array( 'adapter' => 'Mysql', 'host' => 'localhost', 'username' => 'usr', 'password' => 'pwd', 'dbname' => 'dbname', ) ); 

有点相关,我有一个webtools的URL越来越长的问题..最终我可以通过在config.phpbaseUri的替换添加单词webtools来解决这个问题。

 <?php ### config.php ... somewhat relevant parts ... return new \Phalcon\Config([ 'database' => [ # ... some things ... ], 'application' => [ # ... some more ... // This allows the baseUri to be understand project paths that are not in the root directory // of the webpspace. This will break if the public/index.php entry point is moved or // possibly if the web server rewrite rules are changed. This can also be set to a static path. 'baseUri' => preg_replace( '/(public([\/\\\\]))?(index)|(webtools).php$/', '', $_SERVER["PHP_SELF"] ), ] ]);