Я установил CI 2.0.3 и GC 1.1.4 для тестирования, потому что на первый взгляд ваш код выглядел нормально.Как оказалось, так и есть, и ваш код работает.Я изменил метод employees_management
из коробки в контроллере examples
с помощью GC.Добавлен столбец user_password в базу данных и добавлен ваш код в контроллер.
Код гарантирует, что поля пароля совпадают и что они не пусты при отправке.
- Пусторезультаты в
"The Password field is required"
- Несоответствие результатов в
"The Password field does not match the konfirmpass field."
Возможно, если это не работает для вас, вы должны опубликовать весь ваш метод, а не только правила и обратные вызовы, такмы можем видеть, есть ли какие-либо другие проблемы.
Редактировать
Редактировать поле, только если пароль был отредактированвам нужно добавить
$crud->callback_before_update( array( $this,'update_password' ) );
function update_password( $post ) {
if( empty( $post['user_password'] ) ) {
unset($post['user_password'], $post['konfirmpass']);
}
return $post;
}
Это, однако, может означать, что вам нужно удалить проверку пустого пароля в зависимости от того, в каком порядке выполняются обратные вызовы (если они выполняются до или после проверки формы).Если они запускаются до проверки формы, вам также необходимо выполнить вызов к callback_before_insert()
и добавить свои правила проверки в двух обратных вызовах.Для вставки, очевидно, понадобится правило required
, а для обновления нет.
Правка 2, Разъяснение правки 1
После проверки проверка выполняется дообратные вызовы, поэтому вы не можете установить правила проверки в функциях обратного вызова.Для этого вам нужно использовать функцию с именем getState()
, которая позволяет вам добавлять логику на основе действий, выполняемых CRUD.
В этом случае нам нужно только создать поле пароля required
когда мы добавляем строку, и не требуется при обновлении .
Так что в дополнение к вышеуказанному обратному вызову update_password()
вам нужно будет обернутьправила проверки формы в проверке состояния.
if( $crud->getState() == 'insert_validation' ) {
$crud->set_rules('user_password', 'Password', 'trim|required|matches[konfirmpass]');
$crud->set_rules('konfirmpass', 'Konfirmasi Password', 'trim|required');
}
Это добавит параметры проверки, если CRUD вставляет.