it-swarm-es.tech

ID de JModelForm guardado

Estoy guardando un modelo del controlador como se menciona a continuación.

$model->save($data);

La función de guardar mi modelo se ve como se muestra a continuación.

public function save($data)
{
    $id = (!empty($data['id'])) ? $data['id'] : (int)$this->getState('rev.id');
    $state = (!empty($data['state'])) ? 1 : 0;
    $user = JFactory::getUser();

    if($id) {
        //Check the user can edit this item
        $authorised = $user->authorise('core.edit', 'com_customroi.rev.'.$id) || $authorised = $user->authorise('core.edit.own', 'com_customroi.rev.'.$id);
        if($user->authorise('core.edit.state', 'com_customroi.rev.'.$id) !== true && $state == 1){ //The user cannot edit the state of the item.
            $data['state'] = 0;
        }
    } else {
        //Check the user can create new items in this section
        $authorised = $user->authorise('core.create', 'com_customroi');
        if($user->authorise('core.edit.state', 'com_customroi.rev.'.$id) !== true && $state == 1){ //The user cannot edit the state of the item.
            $data['state'] = 0;
        }
    }

    if ($authorised !== true) {
        JError::raiseError(403, JText::_('JERROR_ALERTNOAUTHOR'));
        return false;
    }

    $table = $this->getTable();
    if ($table->save($data) === true) {
        return $id;
    } else {
        return false;
    }

}

Después de guardar el modelo en el controlador (que funciona bien), necesito guardar algunos datos asociados para los cuales necesito la ID del modelo guardado. Intenté lo siguiente con la esperanza de que uno de ellos devuelva la identificación junto con otra información, pero hasta ahora no ha tenido éxito.

$model->getProperties();
$model->getState('rev.id');

Obtener la identificación de un modelo no debería ser tan difícil, así que debo estar perdiendo algo básico aquí.

2
yetanotherse

El controlador de la base de datos agregará el resultado nuevamente a la Tabla después de guardarlo.

Entonces, algo como el siguiente debería funcionar:

$table = $this->getTable();
if ($table->save($data) === true) {
    return $table->id;
} else {
    return false;
}
2
Fedik