it-swarm-vi.com

Làm thế nào để gửi biểu mẫu với lượt xem / nhiệm vụ thực sự hoạt động?

Xin chào Tôi có một câu hỏi về các hình thức Joomla. Tôi muốn hiểu làm thế nào Joomla hoạt động nội bộ, đặc biệt là tôi quan tâm đến com_installer thành phần để biết nó hoạt động như thế nào. Và tôi đã tìm thấy một hình thức trong default.php trong tập tin com_installer/views/install/tmpl thư mục.

Trong tệp này có các nút tùy chỉnh để gửi biểu mẫu. Và tôi quan tâm đến cách các nút thực sự kích hoạt việc cài đặt các thành phần, mô-đun hoặc những thứ khác. Trong phần thân, tôi thấy một số giá trị ẩn như

<input type="hidden" name="task" value="install.install" />

Vì vậy, giá trị ẩn này có thể kích hoạt cài đặt bằng cách gọi bộ điều khiển cài đặt và phương thức cài đặt của bộ điều khiển đó.

Nhưng câu hỏi là Joomla làm điều này như thế nào? Mã chuyển hướng url từ view = install sang task = install.install ở đâu? Nói cách khác, làm thế nào Joomla biết rằng giá trị hình thành đầu vào ẩn nên đi đến url?

5
Bogdan

@RiccardoZorn đúng ở cấp cơ sở. Có hai trường biểu mẫu ẩn thường được đặt: tùy chọn và tác vụ.

Tùy chọn: Tên thành phần, chẳng hạn như com_example Chỉ đạo trang tải thành phần đó.

Nhiệm vụ: Một chức năng điều khiển hoặc một bộ điều khiển và một chức năng để gọi. Nếu nó có '.' trong đó phần trước đó chỉ định một bộ điều khiển để tải và sau đó gọi hàm với tên của phần sau dấu chấm. Nếu không có dấu chấm thì nó sẽ chỉ chạy hàm trong bộ điều khiển mặc định (thường là tệp.php trong thư mục cơ sở của thành phần.


Bạn cũng đặc biệt hỏi về các nút thanh công cụ. Điều này liên quan đến một chút javascript được Joomla tự động tải để cấp nguồn cho các nút.

Khi nhấp vào nút, nó sẽ kích hoạt Joomla.submitbutton(). Hàm này nhận một giá trị là nhiệm vụ cần đặt dựa trên nút được nhấp. Vì vậy, nếu bạn nhấp vào nút lưu, điều này thường sẽ đặt tác vụ thành import.save. (Tôi không nghĩ nút đó thực sự tồn tại trong thành phần này, nhưng nhiều người khác sẽ có nút đó.)

Hàm submitbutton theo mặc định chỉ đẩy nó sang hàm khác submitform. Hàm này sau đó sẽ chuyển nhiệm vụ đó vào trường ẩn thích hợp. Cuối cùng, điều này nộp mẫu.

Vì vậy, mặc dù các nút thanh công cụ đó không phải là nút gửi (hoặc thậm chí trong thẻ biểu mẫu thường), chúng vẫn sẽ cập nhật giá trị ẩn của task và gửi biểu mẫu bằng javascript.

Bạn có thể tìm thấy các hàm javascript cốt lõi tại đây: media/system/js/core-uncompressed.js

3
David Fritsch

Tác vụ là một phương thức trong bộ điều khiển.php trong thư mục thành phần chính (nếu đó là một từ đơn) hoặc tên của bộ điều khiển và phương thức của nó được phân tách bằng dấu chấm, tức là install.install Sẽ được phân tích cú pháp bởi phương thức install() trong controllers/install.php

2
Riccardo Zorn