Tôi đang gặp khó khăn với vấn đề sau.Typo3 external_table & foreign_table_where trong TCA
Tôi có hai bảng cơ sở dữ liệu, "Sách" và "Danh mục". Tôi nhận được tất cả các dữ liệu từ "sách" -table thông qua Sysfolder trong Backends Danh sách xem để chỉnh sửa, phân loại và kiểm soát chúng.
Điều tôi muốn nhận được, là sẽ có trong chế độ xem danh sách đó cũng là tên của danh mục chứa sách.
Trong "Sách", có thể có một trường ngoài khóa "category_id"
xác định danh mục mà Sách thuộc về. Tôi đã thử qua số "category_id"
này để lấy tên của Danh mục trong Chế độ xem danh sách Sách.
Khi tôi xác định trong TCA['books']
rằng category_id
như:
'category_id' => array (
'exclude' => 0,
'label' => 'Cat name',
'config' => array (
'type' => 'select',
'foreign_table' => 'category',
'foreign_table_where' => 'AND category.id=###REC_FIELD_category_id###',
'eval' => 'int',
'checkbox' => '0',
'default' => 0
)
),
nó kết nối Sách và Categories sử dụng category_id
(Sách-bàn) và uid
(trong loại-bảng).
Không giống như tôi muốn, rằng nó sẽ kết nối chúng bằng cách sử dụng category_id (trong Books-table) và id (trong Category-table). Id này là id của danh mục và có thể khác với uid.
Tôi có làm điều gì đó sai hoặc không bằng cách nào đó Typo3 tự động thực hiện "kết nối" này với các bảng nước ngoài uid
. ? Có cách nào để có được nó như tôi muốn không?
Cám ơn câu trả lời của bạn. Tôi đã thử nó theo cách đó. Vì vậy, tôi đã tạo một tệp lớp trong thư mục typo3conf/ext/MY_EXTENSION. – Andrew
Cảm ơn câu trả lời của bạn. Tôi đã thử nó theo cách đó. Vì vậy, tôi đã tạo một tệp lớp trong thư mục typo3conf/ext/MY_EXTENSION. Trong tập tin đó tôi đã tạo một lớp với một phương thức. Tôi đã bao gồm các lớp học trong ext_tables.php Và cuối cùng tôi đã đặt các mụcProcFunc trong cấu hình cho trường danh mục theo phương pháp của tôi. Bây giờ tôi đã hiểu điều gì đó không ổn. Tôi đã cố gắng để có được một phản ứng bằng cách làm cho đơn giản echo và thoát trong phương pháp của tôi, nhưng không có gì xảy ra khi tôi tải List-view trong Backend, nó xuất hiện như trước đó. – Andrew
Nếu bạn chỉ kiểm tra bằng 'echo', hãy đảm bảo rằng bạn thực sự không nhận được kết quả đầu ra. Lưu ý rằng đầu ra echo có thể được ẩn đằng sau các trường biểu mẫu và nó sẽ không ở đầu mã HTML và cũng đảm bảo rằng bạn đang kiểm tra khung bên phải. Nó có thể là tốt hơn để kiểm tra bằng cách sửa đổi '$ PA ['items']' như trong bước 2. Nếu bạn thực sự không nhận được bất cứ điều gì, kiểm tra xem bạn đã không thực hiện bất kỳ sai lầm - rằng lớp học được bao gồm và bạn thiết lập 'itemsProcFunc' đến đúng lớp và phương thức. – tmt