[英]Lithium PHP framework - submitted model property disappears before save
我正在開發一個使用Lithium PHP框架構建的項目,並且遇到一個奇怪的問題:
我有兩個用於用戶的控制器-一個用於網站的前端,一個用於管理面板。 它們都具有edit()
方法,該方法調用Users
模型的save
方法。
問題是這個:
當我嘗試在管理面板中更改密碼時- $request->data
包含confirmPassword
POST字段---但---驗證規則永遠不會觸發。 而且,當我嘗試在前端注冊用戶時confirmPassword
觸發器的驗證。
這些方法具有相同的代碼:
public function {add / edit} ($request, $user) {
if (!$request->data) {
return array(200, $user);
}
$success = $user->save();
return array($success, $user);
}
驗證規則在模型中,並且使用自定義驗證,該驗證在config/bootstrap/validation.php
使用以下代碼定義:
Validator::add('matchesPassword', function($value, $format, $options) { ...
最后-該網站是使用Lithium PHP框架(對我來說是新的) li3_resources
,並使用li3_resources
,所有控制器和模型都擴展了該Resource
類。
那么...此POST字段在哪里消失? ...有什么線索嗎? ...
編輯:當我編寫public function {add / edit} ($request, $user) {
我的意思是兩種方法:
public function add($request, $user) { ...
public function edit($request, $user) { ...
謝謝。
我找到了問題的原因:) ...
在以前的開發人員在模型中定義的驗證規則上,有以下子句:
'on' => 'create'
這導致驗證規則在編輯時不會觸發。
PS:我想傾倒在確認自身的規則(在這個類- https://github.com/UnionOfRAD/lithium/blob/master/util/Validator.php -在上線469 annonimous功能:
return static::_filter(__FUNCTION__, $params, function($self, $params) {
但傾銷從未發生??? ...可能在那里工作-這可以為我節省一些時間...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.