Skip to content

SaveAction

REST save / create / update actions.

Responsibilities: - Delegate persistence to the Save trait - Translate save results into correct HTTP semantics

Non-responsibilities: - No persistence logic - No validation logic - No inference of entity-level errors


  • Full name: \PhalconKit\Mvc\Controller\Traits\Actions\Rest\SaveAction

Methods

saveAction

Generic save endpoint.

public saveAction(): \Phalcon\Http\ResponseInterface
  • Auto-detects creation vs. update
  • Supports single or batch payloads
  • Backward compatible entry point

Throws:

When request payload filtering fails. - Exception When persistence intent resolution returns an inconsistent framework state. - LogicException


createAction

Explicitly create endpoint.

public createAction(): \Phalcon\Http\ResponseInterface
  • Forces creation semantics
  • Single entity success → 201 Created
  • Batch semantics unchanged (200 / 207 / 422)

Throws:

When request payload filtering fails. - Exception When persistence intent resolution returns an inconsistent framework state. - LogicException


updateAction

Explicit update endpoint.

public updateAction(): \Phalcon\Http\ResponseInterface
  • Forces update semantics
  • Success → 200 OK

Throws:

When request payload filtering fails. - Exception When persistence intent resolution returns an inconsistent framework state. - LogicException


respondFromSaveResult

Normalizes a save() result into a REST response.

protected respondFromSaveResult(array $ret): \Phalcon\Http\ResponseInterface

Rules enforced here:

Single entity: - 200 OK → success - 400 Bad Req → malformed input without validation/domain messages - 422 Unprocessable → validation/domain failure with messages

Batch: - 200 OK → all entities saved - 207 Multi → mixed success / failure - 422 Unprocessable → all entities failed

Parameters:

Parameter Type Description
$ret array Result returned by save(), create(), or update()

getSaveActionFailureStatusCode

Resolve the HTTP status code for a failed single-entity save.

protected getSaveActionFailureStatusCode(array $ret): int

Model, validation, and domain-rule failures normally include messages and map to 422 Unprocessable Entity. Framework-generated REST failures use Phalcon message codes for request problems such as invalid create/update intent, missing targets, forbidden operations, or conflicts; those explicit 4xx codes are preserved so the action layer does not collapse them into validation responses. 5xx responses should come from thrown exceptions or explicit controller error handling, not model messages.

A failure without messages is treated as a malformed request because the persistence layer could not provide a domain-specific reason for the rejection.

Parameters:

Parameter Type Description
$ret array Single-entity save result.