![](/img/trans.png)
[英]Phalcon\Mvc\Model\Validator\Uniqueness in “standalone” mode
[英]Phalcon 3: Validating form data using \Phalcon\Mvc\Model\Validator
自從最新版本的Phalcon發布以來,文檔中提供的示例似乎無法正常工作。
首先,我創建一個新的模式DevTools使用在命令行phalcon model User
。
然后,我修改了validation()
函數。 我的models\\User.php
文件:
use Phalcon\Mvc\Model\Validator\Email as Email;
use Phalcon\Mvc\Model\Validator\Uniqueness as Uniqueness;
use Phalcon\Mvc\Model\Validator\StringLength as StringLength;
class User extends \Phalcon\Mvc\Model
{
public function validation()
{
$this->validate(
new Email(
array(
'field' => 'email',
'message' => 'Please enter a valid email'
)
)
);
$this->validate(
new Uniqueness(
array(
'field' => 'email',
'message' => 'Your email is already in use'
)
)
);
$this->validate(
new StringLength(
array(
'field' => 'password',
'min' => 4,
'max' => 30,
'minMessage' => 'Your password must be at least 4 characters',
'maxMessage' => 'Your password must be less than 30 characters'
)
)
);
if ($this->validationHasFailed() == true) {
return false;
}
return true;
}
}
但是,這會引發以下錯誤:
可捕獲的致命錯誤:傳遞給Phalcon \\ Mvc \\ Model :: validate()的參數1必須實現接口Phalcon \\ ValidationInterface,在C:\\ xampp \\ htdocs \\ app \\ models \\ User中給出的Phalcon \\ Mvc \\ Model \\ Validator \\ Email實例第27行的.php
這是什么意思? 我相信Phalcon\\Validation
和Phalcon\\Mvc\\Model\\Validator
是完全不同的野獸(后者提供更多功能)?
截至Phalcon 3.0 Phalcon\\Mvc\\Model\\Validation
現已棄用,以支持Phalcon\\Validation
。 這樣做是為了減少代碼庫,因為兩個組件都在做類似的工作。 您可以在下面找到需要更改的示例。
namespace Invo\Models;
use Phalcon\Mvc\Model;
use Phalcon\Mvc\Model\Validator\Email as EmailValidator;
use Phalcon\Mvc\Model\Validator\Uniqueness as UniquenessValidator;
class Users extends Model
{
public function validation()
{
$this->validate(
new EmailValidator(
[
'field' => 'email',
]
)
);
$this->validate(
new UniquenessValidator(
[
'field' => 'username',
'message' => 'Sorry, That username is already taken',
]
)
);
if ($this->validationHasFailed() == true) {
return false;
}
}
}
namespace Invo\Models;
use Phalcon\Mvc\Model;
use Phalcon\Validation;
use Phalcon\Validation\Validator\Email as EmailValidator;
use Phalcon\Validation\Validator\Uniqueness as UniquenessValidator;
class Users extends Model
{
public function validation()
{
$validator = new Validation();
$validator->add(
'email', //your field name
new EmailValidator([
'model' => $this,
'message' => 'Please enter a correct email address'
])
);
$validator->add(
'username',
new UniquenessValidator([
'model' => $this,
'message' => 'Sorry, That username is already taken',
])
);
return $this->validate($validator);
}
}
可以在博客中找到更多信息和補丁說明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.