Расширение операций
Помимо создания дополнительных операций, несложно изменить поведение любой из стандартных.
Функция | Аргументы | Возврат | Описание |
---|---|---|---|
opAdd | row_data [array] - данные для записи | array - доп. данные в ответ клиенту | Стандартный add. |
opEdit | id [integer] - primary key row_data [array] - данные для записи | array - доп. данные в ответ клиенту | Стандартный edit. |
opDel | id [mixed] | array - доп. данные в ответ клиенту | Стандартный del. При удалении нескольких записей принимает строку с id через запятую |
operData | row_data [array] - данные для записи | array - измененные данные для записи | Позволяет изменить сохраняемые данные для операций add и edit. Часто используется для проверки данных и обработки значений Null. |
operAfterAddEdit | id [integer] - primary_key | Вызывается после операций add и edit. Принимает id только что добавленного или измененного ряда. | |
operComplete | response [array] - ответ от сервера oper [string] - выполненная операция | array - ответ от сервера | Вызывается после выполнения любой стандартной или дополнительной операции. Часто используется для заключительных действий, вроде сброса кешей, а также для финального изменения ответа от сервера. |
Пример добавления своего кода перед и после стандартного редактирования:
protected function opEdit($id, $data) { $data['name'] = ucfirst($data['name']); // before oper $response = parent::opEdit($id, $data); // exec orginial oper cache::drop($id); // after oper $response['cache_dropped'] = 1; // modify original response return $response; }
Пример модификации и проверки данных при add и edit:
protected function operData($data) { $data['name'] = $data['name'] ? $data['name'] : null; //set null if empty $data['price'] = max(0, $data['price']); //sanitize data //Server side error checking if($data['discount'] > 0.2) { throw new jqGridException('Discount is too high'); //This message goes directly to server response } return $data; }