web-dev-qa-db-fra.com

ID de JModelForm enregistré

Je sauve un modèle de contrôleur comme mentionné ci-dessous.

$model->save($data);

Ma fonction de sauvegarde de modèle a l'apparence suivante.

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

}

Après avoir enregistré le modèle dans le contrôleur (qui fonctionne correctement), je dois enregistrer certaines données associées pour lesquelles j'ai besoin de l'ID du modèle enregistré. J'ai essayé ce qui suit en espérant que l'un d'eux retournera l'ID avec d'autres informations, mais sans succès jusqu'à présent.

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

Obtenir l'identification d'un modèle ne devrait pas être si difficile, alors il me manque quelque chose de fondamental ici.

2
yetanotherse

Le pilote de base de données rajoutera le résultat à la table après la sauvegarde.

Donc, quelque chose comme next devrait marcher:

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