Hello,
I have said it before and I will say it again...I love this software!
I am trying to set different validation rules for the state add and edit but it does not seem to be working. Has anyone else been successful doing this? Maybe I am not doing it correctly. I do see the different states appearing in the log. I am using code igniter 2.2 and grocery crud 1.4.1.
Here is my code of the controller function:
$crud = new grocery_CRUD();
$crud->columns( 'fm_session_id','fm_session_start_time', 'client', 'coach', 'mood', 'weather', 'awareness_level', 'client_interaction_rating', 'session_delivery_rating', 'comments', 'activities' );
$data[ 'title' ] = 'sessions';
$crud->set_table( 'fm_sessions' );
$crud->change_field_type( 'created_time', 'invisible' );
$crud->change_field_type( 'created_by', 'invisible' );
$crud->change_field_type( 'modified_time', 'invisible' );
$crud->change_field_type( 'modified_by', 'invisible' );
$crud->set_relation( 'mood', 'mood_types', 'name' );
$crud->set_relation( 'weather', 'weather_types', 'name' );
$crud->set_relation( 'awareness_level', 'awareness_level_types', 'name' );
$crud->set_relation( 'client', 'clients', 'client_full_name' );
$crud->set_relation( 'coach', 'customers', 'customer_full_name' );
$crud->set_relation_n_n( 'activities', 'fm_session_activities', 'activities', 'fm_session', 'activity', 'activity_name' );
$crud->required_fields( 'client', 'coach', 'fm_session_start_time', 'activities' );
$crud->display_as( 'fm_session_id', 'Session ID' );
$crud->display_as( 'fm_session_start_time', 'Session Start' );
$crud->display_as( 'awareness_level', 'Awareness Level' );
$crud->display_as( 'client_interaction_rating', 'Client Interaction Rating' );
$crud->display_as( 'session_delivery_rating', 'Session Delivery Rating' );
$crud->set_subject( 'Session' );
// Set the coach and client select boxes appropriately
// Customer coaches can only see and select session elements associated with the clients assigned to them
// Customer admins can see all info for coaches who are members of the same customer organization
$crud->callback_add_field( 'coach', array( $this, 'get_session_coach_select' ) );
$crud->callback_add_field( 'client', array( $this, 'get_session_client_select' ) );
$crud->unset_edit_fields( 'activities' );
$crud->unset_add_fields( 'comments' );
// set the select element then disable and then enable it again on submit
// This needs to remain on for the activity selection to work!
$crud->callback_add_field( 'activities', array( $this, 'get_session_activities' ) );
$crud->callback_edit_field( 'session_delivery_rating', array( $this, 'edit_field_callback_session_delivery_rating' ) );
$crud->callback_edit_field( 'client_interaction_rating', array( $this, 'edit_field_callback_client_interaction_rating' ) );
$crud->callback_before_insert( array( $this, 'insert_hidden_fields' ) );
$crud->callback_before_update( array( $this, 'update_hidden_fields' ) );
$crud->unset_read();
// Validation rules
$crud->set_rules( 'client', 'Client', 'required|callback_session_client' );
$crud->set_rules( 'coach', 'Coach', 'required' );
// This next callback will set the session id which will then be used for the session time validation rule
$crud->set_rules( 'fm_session_id', 'Session ID', 'callback_assign_session_id' );
$crud->add_action( 'Evaluation', base_url('assets/grocery_crud/themes/flexigrid/css/images/lightbulb.png'), 'sessionactivities', '' );
$crud->add_action( 'Download', base_url('assets/images/doc.png'), 'sessions/download', '' );
// Try to separate the session start time validation rules for add and edit
$state = $crud->getState();
$state_info = $crud->getStateInfo();
log_message( 'info', 'sessions.index: the current state is ' . $state );
if( $state == 'add' )
{
$crud->set_rules( 'fm_session_start_time', 'Session Start', 'required|trim|xss_clean|callback_check_date_time_format|callback_check_session_gt_now|callback_check_session_no_conflict' );
}
elseif( $state == 'edit' )
{
$crud->set_rules( 'fm_session_start_time', 'Session Start', 'required|trim|xss_clean|callback_check_date_time_format' );
}
$output = $crud->render();
$this->load->view( 'templates/header', $data );
$this->load->view( 'sessions_content' );
$this->load->view( 'contents', $output );
$this->load->view( 'templates/footer' );
log_message( 'info', 'Done sessions.index' );
