Bộ điều khiển thường được tạo cho một tài nguyên nhất định (một lớp thực thể, một bảng trong cơ sở dữ liệu), nhưng cũng có thể được tạo để nhóm các hành động chịu trách nhiệm với một phần nhất định của ứng dụng. Trong ví dụ của bạn, đó sẽ là một bộ điều khiển xử lý bảo mật cho ứng dụng:
class SecurityController
{
// can handle both the login page display and
// the login page submission
login();
logout();
register();
// optional: confirm account after registration
confirm();
// displays the forgot password page
forgotPassword();
// displays the reset password page
// and handle the form submission
resetPassword();
}
Lưu ý : không đặt các hành động liên quan đến bảo mật và hành động hồ sơ người dùng trong cùng một bộ điều khiển; nó có thể có ý nghĩa bởi vì chúng có liên quan đến người dùng, nhưng một người nên xử lý xác thực và người kia nên xử lý các cập nhật email, tên, v.v.
Với các bộ điều khiển được tạo cho tài nguyên (giả sử Task
), bạn sẽ có các hành động CRUD thông thường :
class TasksController
{
// usually displays a paginated list of tasks
index();
// displays a certain task, based on an identifier
show(id);
// displays page with form and
// handles form submission for creating
// new tasks
create();
// same as create(), but for changing records
update(id);
// displays confirmation message
// and handles submissions in case of confirmation
delete()
}
Tất nhiên, bạn có khả năng thêm các tài nguyên liên quan vào cùng một bộ điều khiển. Ví dụ, bạn có thực thể Business
và mỗi người có một vài BusinessService
thực thể. Một bộ điều khiển cho nó có thể trông như thế này:
class BusinessController
{
index();
show(id);
create();
update(id);
delete();
// display the business services for a certain business
listBusinessServices(businessId);
// displays a certain business service
showBusinessService(id);
// create a new business service for a certain business
createBusinessService(businessId);
// updates a certain business service
updateBusinessService(id);
// deletes a certain business service
deleteBusinessService(id);
}
Cách tiếp cận này có ý nghĩa khi các thực thể con liên quan không thể tồn tại mà không có thực thể cha mẹ.
Đây là những khuyến nghị của tôi:
- tạo bộ điều khiển dựa trên một nhóm các hoạt động liên quan (xử lý một số trách nhiệm nhất định như bảo mật hoặc hoạt động CRUD trên tài nguyên, v.v.);
- đối với các bộ điều khiển dựa trên tài nguyên, không thêm các hành động không cần thiết (nếu bạn không được yêu cầu cập nhật tài nguyên, không thêm hành động cập nhật);
- bạn có thể thêm các hành động "tùy chỉnh" để đơn giản hóa mọi thứ (ví dụ: bạn có một
Subscription
thực thể có sẵn dựa trên số lượng mục nhập hạn chế, bạn có thể thêm một hành động mới vào bộ điều khiển có tên use()
với mục đích duy nhất là trừ một mục từ Subscription
)
- giữ mọi thứ đơn giản - đừng làm lộn xộn bộ điều khiển của bạn với một số lượng lớn hành động và logic phức tạp, hãy cố gắng đơn giản hóa mọi thứ bằng cách giảm số lượng hành động hoặc tạo hai bộ điều khiển;
- nếu bạn đang sử dụng một khung tập trung MVC, hãy làm theo các hướng dẫn thực hành tốt nhất của họ (nếu họ có nó).
Một số tài nguyên để đọc thêm ở đây .