Devise\Pages\Models\ModelManager::updateFields PHP Метод

updateFields() публичный Метод

Update each field in this fields array
public updateFields ( [type] $fields, [type] $page ) : [type]
$fields [type]
$page [type]
Результат [type]
    public function updateFields($fields, $page)
    {
        $originals = $this->getOriginalFields($fields);
        $fields = $this->getUpdatedFields($fields);
        $model = $this->getModelFor($fields);
        $values = $this->getValues($fields, $model, $page);
        $rules = $this->getRules($fields);
        $messages = $this->getMessages($fields);
        $validator = $this->Validator->make($values, $rules, $messages);
        if ($validator->fails()) {
            $this->restoreOriginalFields($originals);
            throw new ModelFieldValidationFailedException("Validation failed!", $validator->errors());
        }
        foreach ($values as $attribute => $value) {
            $model->{$attribute} = $value;
        }
        $model->save();
        return $fields;
    }

Usage Example

Пример #1
0
 /**
  * Loops over all fields for this model and updates
  * the model with new values (model)
  *
  * @param  array $input
  * @return array
  */
 public function executeModelFieldsUpdate($input)
 {
     try {
         $fields = $this->ModelManager->updateFields($input['fields'], $input['page']);
     } catch (ModelFieldValidationFailedException $e) {
         return $this->Response->json(['errors' => $e->getErrors()], 403);
     }
     return array('fields' => $fields);
 }