Jump to content


Json Sean

Member Since 14 Sep 2017
Offline Last Active Dec 27 2017 09:16 AM
-----

#15705 Error Messages

Posted Json Sean on 01 November 2017 - 05:36 AM

Here is the way to custom error message when editing :

 

1、modify Grocery_CRUD.php

protected function db_update($state_info)
{
  ...
  if($this->callback_before_update !== null)
  {
    $callback_return = call_user_func($this->callback_before_update, $post_data, $primary_key);

    if(!empty($callback_return) && is_array($callback_return))
    {
      $post_data = $callback_return;
    }
    elseif($callback_return === false)
   {
     return false;
+   }elseif( is_string($callback_return))
+   {
+     return array('status' => false,'message' => $callback_return);
+   }

 }

...

}
protected function update_layout($update_result = false, $state_info = null)
{
  @ob_end_clean();
  if($update_result === false)
  {
     echo json_encode(array('success' => $update_result));
+  }elseif(isset($update_result['status'])){
+    //TODO:custom error
+    $error_message = '<p>'.$update_result['message']. '</p>';
+    echo json_encode(array(
+    'success' => $update_result['status'] ,
+    'error_message' => $error_message,
+    ));
+  }
  else
  {

  ...

}

2、edit.js

...

$('#crudForm').ajaxSubmit({
  dataType: 'text',
  cache: 'false',
  beforeSend: function(){
    $("#FormLoading").show();
  },
  success: function(result) {
  data = $.parseJSON(result);
  if (data.success) {

    if(save_and_close)
    {
      if ($('#save-and-go-back-button').closest('.ui-dialog').length === 0) {
        window.location = data.success_list_url+'?type=edit';
        //form_success_message(data.success_list_url);
      } else {
        $(".ui-dialog-content").dialog("close");
        success_message(data.success_message);
      }

      return true;
    }

    form_success_message(data.success_message);
+  }else if (!data.success & data.error_message != null){
+    //TODO: custom error message
+    form_error_message(data.error_message);
+  } else {
    form_error_message(message_update_error);
  }
 },
 error: function(){
   form_error_message( message_update_error );
 }
});

...

 

 

3、in you callback function, just return the string of your error message:

function before_xxx_update_callback($post_array, $primary_key) {
  if( error ){
    $message = 'error message';
    return $message;
  }

  return $post_array;
}

To make it extendibility , you may define Cutom_Grocery_CRUD.php extending Grocery_CRUD.php , then modify Cutom_Grocery_CRUD.php.




#15517 Multiselect validation fails on v1.5.7

Posted Json Sean on 14 September 2017 - 08:46 AM

Modify file of 'system/libraries/Form_validation.php':

 

in the function "public function run($group = '')",before _execute action add codes like this:

 

...

 

if(in_array('required',$row['rules']) and is_array($row['postdata'])){
$row['postdata'] = json_encode($row['postdata'],JSON_UNESCAPED_UNICODE);
}

 

...
$this->_execute($row, $row['rules'], $row['postdata']);