AjaxUpdateFieldAction.php 1013 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: NODELOG
  5. * Date: 16/7/21
  6. * Time: 下午11:28
  7. */
  8. namespace common\actions;
  9. use Yii;
  10. use yii\base\DynamicModel;
  11. use yii\base\Exception;
  12. class AjaxUpdateFieldAction extends \backend\actions\Action
  13. {
  14. public $allowFields = [];
  15. public $findModel;
  16. public function run()
  17. {
  18. Yii::$app->response->format = 'json';
  19. $pk = Yii::$app->request->post('pk');
  20. $id = unserialize(base64_decode($pk));
  21. $post = Yii::$app->request->post();
  22. $formModel = DynamicModel::validateData(['id' => $id, 'name' => $post['name'], 'value' => $post['value']], [
  23. [['id'], 'required'],
  24. ['name', 'in', 'range' => $this->allowFields]
  25. ]);
  26. if ($formModel->hasErrors()) {
  27. throw new Exception(current($formModel->getFirstErrors()));
  28. }
  29. $model = $this->findModel($id);
  30. $model->updateAll([$post['name'] => $post['value']], ['id' => $id]);
  31. return ['status' => 1];
  32. }
  33. }