ti-enxame.com

ID do JModelForm salvo

Estou salvando um modelo do controlador, conforme mencionado abaixo.

$model->save($data);

Minha função de salvar modelo é mostrada abaixo.

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;
    }

}

Depois de salvar o modelo no controlador (que está funcionando bem), preciso salvar alguns dados associados para os quais preciso do ID do modelo salvo. Tentei o seguinte, esperando que um deles retorne o ID junto com outras informações, mas sem sucesso até agora.

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

Obter a identificação de um modelo não deve ser tão difícil, então devo estar perdendo algo básico aqui.

2
yetanotherse

O driver do banco de dados adicionará o resultado novamente à tabela após salvar.

Então, algo como o próximo deve funcionar:

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