Rodrigo, a mi me funciona bien con las modificaciones que te pase anteriormente:
personalizacion/php/rest/v2/actividades_unrn/recurso_actividades_unrn.php
namespace PERS\Guarani\php\rest\v2\actividades_unrn;
use SIUToba\rest\rest;
use SIUToba\rest\lib\rest_validador;
use SIUToba\rest\lib\modelable;
use PERS\Guarani\php\rest\v2\modelos\rest_actividades_unrn;
class recurso_actividades_unrn implements modelable
{
/**
* @var rest_actividades_unrn
*/
protected $modelo;
function __construct()
{
$this->modelo = \guarani::rest(rest_actividades_unrn::class);
}
public static function _get_modelos()
{
$info_actividad = array(
'codigo' => array('type' => 'string'),
'nombre' => array('type' => 'string'),
'contenido' => array('type' => 'string'),
);
$actividad_taxonomia = array(
'materia' => array(
'type' => 'string',
'_validar' => array(rest_validador::OBLIGATORIO, rest_validador::TIPO_TEXTO)),
'taxonomia' => array(
'type' => 'string',
'_validar' => array(rest_validador::OBLIGATORIO, rest_validador::TIPO_ENUM => array(
'A', 'B', 'C', 'D'))),
);
// Datos de la actividad (para modificación)
$actividades_post = [
'materias' => [
'type' => 'array',
'items' => ['$ref' => 'ActividadTaxonomia'],
'_validar' => [rest_validador::OBLIGATORIO, rest_validador::TIPO_ARREGLO]
],
];
return array(
'Actividad' => $info_actividad,
'ActividadTaxonomia' => $actividad_taxonomia,
'ActividadesPost' => $actividades_post,
);
}
/**
* GET /actividades-unrn/cod_actividad
*
* @notes
* Devuelve el contenido minimo de la actividad con id {cod_actividad}.
*
* @summary Id de la actividad {cod_actividad}
* @responses 200 {"$ref":"Actividad"}
* @responses 404 La actividad {cod_actividad} no existe
*/
function get($cod_actividad)
{
$datos = $this->modelo->get($cod_actividad);
rest::response()->get($datos);
}
/**
* POST /actividades-unrn
*
* @notes Recibe una lista de actividades con sus respectivas taxonomias las cuales se actualizan en Guaraní.
*
* @param_body $actividad_post ActividadesPost [required] Campos de una actividad.
*
* @summary Recibe una lista de actividades con sus respectivas taxonomias las cuales se actualizan en Guaraní.
* @responses 201 Exito - Se actualizaron exitosamente todas las taxonomias
* @responses 400 Errores de validación
* @responses 500 Falló la actualización de taxonomias
*/
function post_list()
{
$this->modelo->post(rest::request()->get_body_json());
rest::response()->post(array('resultado' => 'ok'));
}
}
personalizacion/php/rest/v2/modelos/rest_actividades_unrn.php
namespace PERS\Guarani\php\rest\v2\modelos;
use SIUToba\rest\rest;
use SIUToba\rest\lib\rest_hidratador;
use PERS\Guarani\php\rest\v2\actividades_unrn\recurso_actividades_unrn;
class rest_actividades_unrn
{
protected function get_modelo($nombre)
{
$modelos = recurso_actividades_unrn::_get_modelos();
return $modelos[$nombre];
}
function get($id)
{
$actividades = [
[
'codigo' => 'MAT1',
'nombre' => 'Matemática 1',
'contenido' => 'Ciencia que estudia las propiedades de los números y las relaciones que se establecen entre ellos.'
],
[
'codigo' => 'ING1',
'nombre' => 'Inglés 1',
'contenido' => 'Relativo a Inglaterra, parte integrante del Reino Unido, o a sus habitantes.'
]
];
$actividad_hidratada = rest_hidratador::hidratar($this->get_modelo('Actividad'), $actividades);
return $actividad_hidratada;
}
function post($data)
{
rest::response()->post(['resultado' => 'ok']);
}
}
Recorda agregar los servicios en instalacion/i__desarrollo/p__guarani/rest/recursos_usuarios.php:
//actividades-unrn
'actividades-unrn' => [
'POST' => ['usuarios' => array_merge($usuarios_admin, $todos)]
],
'actividades-unrn/id' => [
'GET' => ['usuarios' => array_merge($usuarios_admin, $todos)]
],
saludos.
4