Nó thực sự rất dễ dàng, ngoại trừ việc xóa tất cả các tham chiếu đến chuẩn từ mã soạn sẵn, tôi chỉ cần ghi đè lên một chức năng duy nhất toUrl
trong lớp thực thể tùy chỉnh của tôi:
src/Entity/MyContentEntity.php
/**
* Định nghĩa lớp thực thể chunk.
* Lưu ý mục "links = { canonical }" bị thiếu trong chú thích
*
*
* @ContentEntityType(
* id = "khối",
*...
* liên kết = {
* "add-form" = "/admin/content/chunk/add/{chunk_type}",
* "add-page" = "/admin/content/chunk/add",
* "biểu mẫu chỉnh sửa" = "/admin/content/chunk/{chunk}/chỉnh sửa",
* "delete-form" = "/admin/content/chunk/{chunk}/delete",
* "bộ sưu tập" = "/admin/content/chunk"
* },
*...
* )
*/
lớp Chunk mở rộng ContentEntityBase thực hiện ChunkInterface {
/**
* điều này ngăn WSOD khi các mô-đun bên thứ 3 gọi $entity->toUrl
*/
public function toUrl($rel = 'canonical', array $options = []) {
if ($rel == 'chuẩn') {
trả về Url::fromUri('route:<nolink>')->setOptions($options);
}
khác {
trả về cha mẹ::toUrl($rel, $options);
}
}
}
Những nội dung khác ở đây chỉ cần thiết nếu thực thể dựa trên mã soạn sẵn được tạo tự động từ drush tạo ra
hoặc tương tự:
src/Form/MyContentEntityForm.php
/**
* Thay đổi sau đây chỉ cần thiết nếu bạn sử dụng mã soạn sẵn từ "drush generate" hoặc tương tự
*/
lớp ChunkForm mở rộng ContentEntityForm {
lưu chức năng công cộng (mảng $form, FormStateInterface $form_state) {
...
// thay đổi dòng sau
//$form_state->setRedirect('entity.chunk.canonical', ['chunk' => $entity->id()]);
// đến một cái gì đó của sự lựa chọn của bạn
$form_state->setRedirect('entity.chunk.edit-form', ['chunk' => $entity->id()]);
}
}
my_module.links.task.yml
:
# Nếu có, hãy xóa mã soạn sẵn sau khỏi "drush generate" hoặc tương tự
thực thể.chunk.view:
tiêu đề: Xem
route_name: entity.chunk.canonical
cơ sở_route: thực thể.chunk.canonical