我在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和为模型/控制器等生成的功能?或者我可能有问题 在我的系统中?
答案 0 :(得分:0)
无法将实例绑定到静态闭包
https://github.com/phalcon/cphalcon/issues/11029
可捕获的致命错误:参数1传递给Phalcon \ Mvc \ Model :: validate()
已修复3.0.x分支(即将发布)
答案 1 :(得分:0)
关于您的第二条错误消息:
可捕获致命错误:传递给Phalcon \ Mvc \ Model :: validate()的参数1必须实现接口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;
}
}
但在v3中已弃用Phalcon\Mvc\Model\Validation
,您应该使用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尚未更新此部分,我不确定。