Buenos dias
Estoy desarrollando un plugin en Moodle 3.8.9 (Build: 20210510)
El estado del entorno es :
Campo personalizado para curso tipo "select" creado desde la administracion de la plataforma con su lista de valores.
Lo que me sucede:
Dentro del codigo de mi plugin lo he intentado de dos maneras distintas:
-- Codigo Uno
//$field tiene el id de campo de curso que quiero mostrar en mi plugin
$handler = \core_course\customfield\course_handler::create();
$data = $handler->get_instance_data($course->id, true);
$value = $data[$field]->get('value');
// valor del $value = int, que es el id de la cadena del select seleccionada para el id del curso en el que me encuetro.
-- Codigo Dos
$handler = \core_course\customfield\course_handler::create();
$data = $handler->get_instance_data($course->id, true);
if (!empty($data[$field])) {
$field_controller = $data[$field]->get_field();
if($field_controller->get('type')== 'select'){
$valores = $field_controller->get('configdata');
$value = $valores['options'];
}else{
$value = $data[$field]->get('value');
}
Mi consulta es.
¿Cual de las dos formas seria la correcta para recuperar el valor de un campo personalizado de curso tipo select( el valor correspondiente a la cadena, no al id?¿ Donde esta el error para que en un caso me devuelva el id y no el valor y en el otro se lance una excepcion y me devuelva un valor vacio del array de valore? En la pagina de gestion de los cursos ( hay mas de 1000) no ha ocurrido ni un error gestinando ese campo.
Muchas gracias