it-swarm-vi.com

ID của JModelForm đã lưu

Tôi đang lưu một mô hình từ bộ điều khiển như được đề cập dưới đây.

$model->save($data);

Chức năng lưu mô hình của tôi trông như dưới đây.

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

}

Sau khi lưu mô hình trong bộ điều khiển (hoạt động tốt), tôi cần lưu một số dữ liệu liên quan mà tôi cần ID của mô hình đã lưu. Tôi đã thử những điều sau đây với hy vọng một trong số họ sẽ trả lại ID cùng với các thông tin khác nhưng cho đến nay vẫn không thành công.

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

Nhận ID của một mô hình không quá khó khăn vì vậy tôi phải bỏ lỡ điều gì đó cơ bản ở đây.

2
yetanotherse

Trình điều khiển cơ sở dữ liệu sẽ thêm kết quả trở lại Bảng sau khi lưu.

Vì vậy, một cái gì đó như tiếp theo sẽ hoạt động:

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