2015-06-12 3 views
2

Функция, приведенная ниже, заключается в том, что электронное письмо от формы уникально, если оно уже используется, отображается сообщение. Я хочу изменить это сообщение.Как изменить сообщение в buildRules [CakePHP 3]?

public function buildRules(RulesChecker $rules) 
{ 
    $rules->add($rules->isUnique(['username'])); 
    $rules->add($rules->isUnique(['email'])); 
    return $rules; 
} 

Я попробовал этот путь:

public function buildRules(RulesChecker $rules) 
{ 
    $rules->add($rules->isUnique(['username'])); 
    $rules->add($rules->isUnique(['email']), 
     ['errorField' => 'email', 'message' => 'Este email já encontra-se em uso.'] 
    ); 
    return $rules; 
} 

Это работает, но оба сообщения были показали, по умолчанию один и шахты.

ответ

5

При использовании этого стиля добавления уникальных правил, вы должны будете передать сообщение isUnique() вызовы второго аргумента, т.е.

$rules->add($rules->isUnique(['email'], 'Este email já encontra-se em uso.')); 

Это потому, что вы технически создание вложенных друг в друга таким образом, вызываемых объектов ($rules->isUnique() создает один и $rules->add() создает еще один), а определение опций в вызове add() приведет к тому, что они будут установлены во внешнем вызываемом, наконец, в результате будут установлены два сообщения, которые вы установили для внешнего вызываемого, и значение по умолчанию от внутреннего вызываемого.

В основном выше, является сокращением для

$rules->add(new \Cake\ORM\Rule\IsUnique(['email']), [ 
    'errorField' => 'email', 
    'message' => 'Este email já encontra-se em uso.' 
]); 

Смотрите также

+0

Спасибо @ndm, I попробовал что-то подобное, но я поставил сообщение «message» => перед сообщением, чтобы оно не сработало. –

Смежные вопросы