Bạn đã đúng, nhưng bạn không cần phải đi xuống JTable
, nếu bạn đang theo cách của Joomla và sử dụng JControllerForm
làm cơ sở cho trình điều khiển xem của bạn, vd
class MycomponentControllerMycontent extends JControllerForm {}
và sử dụng JModelAdmin
làm cơ sở cho bạn các thành phần Model, vd
class MycomponentModelMycontent extends JModelAdmin {}
Mở rộng JControllerForm
, cung cấp cho bạn một edit()
phương thức tích hợp để thiết lập mô hình và bảng cho bạn và kiểm tra quyền truy cập vào bản ghi được đề cập cũng như liệu bảng có hỗ trợ kiểm tra hay không (bằng cách kiểm tra xem có checked_out
tồn tại cột không). Nếu có, nó sẽ cố gắng checkout()
ghi lại thông qua mô hình.
Bằng cách mở rộng JModelAdmin bạn thừa hưởng nó getItem()
, checkIn()
và checkOut()
phương pháp. Như đã đề cập, mô hình gọi checkout()
( mà nó kế thừa từJModelForm
) và đảm bảo rằng ngoài checked_out
cột, bảng của bạn cũng có một lệnh được gọi checked_out_time
.
Tại thời điểm này, một trong hai điều sẽ xảy ra nếu một trong hai cột đó không tồn tại, JModelForm
giả mạo và trả về true
(biểu thị công việc đã hoàn thành). Mặt khác, nó sẽ lấy người dùng hiện tại và sau đó tiến hành thử kiểm tra trước khi kiểm tra xem nó đã được kiểm tra cho người dùng khác chưa. Tại thời điểm này, nếu cuối cùng gọi việc JTable
thực hiện checkOut()
(nếu bạn không ghi đè nó bằng định nghĩa bảng của riêng bạn mà trong J3 thường không bắt buộc).
JTable
thực hiện chính xác các kiểm tra cột giống nhau và nếu tất cả đều tốt (nghĩa là có ID hợp lệ) sẽ cập nhật các cột checked_out
và checked_out_time
cho bản ghi đang được chỉnh sửa.
Là một lưu ý phụ, khi bạn edit()
một mục, getItem()
được gọi, nó tải các bản ghi thông qua một JTable
(tức là nó một getTable()
tiếp theo load($pk)
. (Tại thời điểm này JTable
cũng gây nên bạn onBeforeLoad và onAfterLoad sự kiện dành cho các plugin đó là tốt đẹp)
Bản ghi được trả về phiên bản của bạn JModelAdmin
, nó chuyển đổi nó thành một stdClass
đối tượng cơ sở (nó đã từng là JObject
quá khứ). Nếu bản ghi (đối tượng bây giờ) chứa một params
cột / thuộc tính, nó chuyển đổi nó thành một JRegistry
đối tượng để dễ dàng truy cập.
Vì vậy, bạn nhận được rất nhiều thứ tiện dụng miễn phí bằng cách sử dụng Joomla. :)