我在Ubuntu 14.04上安装了phalcon 3.0.1-14。还安装了Phalcon DevTools(3.0.1)。最初,我启用了webtools,当我访问那个页面时,总是出现一些警告:
Cannot bind an instance to a static closure in /home/pish/vendor/phalcon/devtools/scripts/Phalcon/Web/Tools.php
Cannot bind an instance to a static closure in /home/pish/vendor/phalcon/devtools/scripts/Phalcon/Web/Tools/views/index.phtml
我只是忽略了它们,并试图从数据库中的现有表中创建一个模型。当我点击"生成"按钮时我得到以下错误:
Phalcon'Mvc'Dispatcher'Exception: ModelsController handler class cannot be loaded
,则不创建模型。我也测试了创建一个控制器,但是控制器也出现了类似的错误
最后,我通过控制台phalcon model users
创建了模型,并且成功创建了。
Catchable fatal error: Argument 1 passed to Phalcon'Mvc'Model::validate() must implement interface Phalcon'ValidationInterface, instance of Phalcon'Mvc'Model'Validator'Email given in...
我的问题基本上是,我安装的开发人员工具版本有什么问题导致了问题使用Webtools和为模型/控制器等生成的函数?或者我可能出了什么问题在我的系统里?
https://github.com/phalcon/cphalcon/issues/11029不能将实例绑定到静态闭包
可捕获的致命错误:参数1传递给Phalcon'Mvc'Model::validate()
在3.0中修复。X分支(即将发布)
关于您的第二个错误消息:
可捕获的致命错误:参数1传递给Phalcon'Mvc'Model::validate()必须实现接口Phalcon'ValidationInterface, Phalcon'Mvc'Model'Validator'Email的实例…
模型验证在Phalcon 3.0中发生了变化。在Phalcon v2中你必须做
public function validation()
{
$this->validate(
new Phalcon'Mvc'Model'Validator'Email(['field' => 'email']);
);
if ($this->validationHasFailed() == true) {
return false;
}
}
但是Phalcon'Mvc'Model'Validation
在v3中已被弃用,您应该使用Phalcon'Validation
代替。只需将代码修改如下:
public function validation()
{
$validator = new Validation();
$validator->add(
'email', //your field name
new Phalcon'Validation'Validator'Email([
'model' => $this,
'message' => 'Please enter a correct email address'
])
);
return $this->validate($validator);
}
也许DevTools还没有更新这部分,我不确定。