小编Mir*_*iai的帖子

CakePHP 3.x:如何动态编辑验证规则

我无法弄清楚如何动态编辑验证规则,例如在我的控制器中.

我的情况:"users"表有"email"字段,其值在创建和更新时必须是"唯一的".现在没关系,我已经创建了正确的验证规则.

但现在我必须创建一个允许用户恢复密码的操作.因此,有一个表单,用户输入他们的电子邮件地址,并且必须验证此表单.之后,操作会检查是否有该电子邮件地址并发送电子邮件以重置密码.

所以:我必须使用验证规则验证表单,但在这种特殊情况下,我不需要电子邮件是"唯一的".

如何仅针对一个操作更改验证规则?

谢谢.


编辑

也许这个?

class UsersTable extends Table {
    public function validationDefault(\Cake\Validation\Validator $validator) {    
        //Some rules...

        $validator->add('email', [
            'unique' => [
                'message'   => 'This value is already used',
                'provider'  => 'table',
                'rule'      => 'validateUnique'
            ]
        ]);

        //Some rules...

        return $validator;
    }

    public function validationOnlyCheck(\Cake\Validation\Validator $validator) {
        $validator->remove('email', 'unique');

        return $validator;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的行动中:

$user = $this->Users->newEntity($this->request->data(), [
    'validate' => 'OnlyCheck'
]);
Run Code Online (Sandbox Code Playgroud)

validation cakephp cakephp-3.0

7
推荐指数
1
解决办法
3484
查看次数

CakePHP 3.x:保存多条记录

我读过转换多个记录.现在我正试图从表单中一次保存多张照片.

附:

debug($this->request->data);
Run Code Online (Sandbox Code Playgroud)

我是这样的:

[
    (int) 1 => [
        'filename' => '25483_106728809362869_5795827_n.jpg',
        'description' => '',
        'album_id' => '2'
    ],
    (int) 3 => [
        'filename' => '44569_193398817463220_816845208_n.jpg',
        'description' => '',
        'album_id' => '1'
    ]
]
Run Code Online (Sandbox Code Playgroud)

好像没问题.

Bake为我创建了这个动作方法:

public function add() {
        $photo = $this->Photos->newEntity();

        if($this->request->is('post')) {
            $photo = $this->Photos->patchEntity($photo, $this->request->data);

            if($this->Photos->save($photo)) {
                return $this->redirect(['action' => 'index']);
            }
        }

        $this->set(compact('photo'));
    }
Run Code Online (Sandbox Code Playgroud)

但CakeBook并没有很好地解释如何继续.我感觉我必须使用newEntities()patchEntities(),但我不太明白怎么做.

例如:为什么newEntity()方法可以接受NULL,而方法newEntities()必然要一个参数?该save()方法一次只接受一个实体?那么,我必须为每个实体循环保存?

我可以举一个小例子吗?谢谢.

cakephp cakephp-3.0

6
推荐指数
1
解决办法
1万
查看次数

PHPUnit:assertFileEquals()失败

我正在开发一个PHP软件,可以从图像创建缩略图.

现在我需要确保成功创建缩略图,换句话说,初始图像已经正确调整大小/裁剪.

我认为只有一种方法可以做到这一点:我手动创建缩略图以与软件创建的缩略图进行比较.

但是怎么测试?

如果我assertFileEquals()用来比较我创建的缩略图和软件创建的缩略图,当然测试失败,即使两个图像相同.

我想,只要因为两个文件的创建日期不同或出于类似原因而发生这种情况.

那么,该怎么办?

php phpunit

5
推荐指数
1
解决办法
233
查看次数

标签 统计

cakephp ×2

cakephp-3.0 ×2

php ×1

phpunit ×1

validation ×1