public function post_update() { $val = Validation::forge(); $val->add_callable('MyRules'); $val->add_field('id', Lang::get('label.product'), 'required|valid_product'); $val->add_field('category_ids', Lang::get('label.category'), 'required'); $val->add_field('product_name', Lang::get('label.product_name'), 'required|max_length[255]'); $val->add_field('product_description', Lang::get('label.description'), 'trim|max_length[1024]'); $val->add_field('product_info', Lang::get('label.information'), 'trim|max_length[10000]'); if ($val->run()) { DB::start_transaction(); $product_id = $val->validated('id'); $category_ids = implode(',', $val->validated('category_ids')); $category_name = Model_Service_Util::mb_trim($val->validated('product_name')); $product_description = Model_Service_Util::mb_trim($val->validated('product_description')); $product_info = $val->validated('product_info'); $product_props = array('product_name' => $category_name, 'product_description' => $product_description, 'product_info' => $product_info); if (Model_Base_Product::update($product_id, $product_props) && Model_Base_ProductCategory::update($product_id, $category_ids)) { DB::commit_transaction(); $this->data['success'] = Lang::get($this->controller . '.' . $this->action . '.success'); } else { DB::rollback_transaction(); $this->data['error'] = Lang::get($this->controller . '.' . $this->action . '.error'); } } else { $this->data['errors'] = $val->error_message(); } return $this->response($this->data); }