Saya mencoba membuat tab khusus baru yang muncul di semua rute yang merupakan turunan entitas. {Entity_type} .canonical. Saya telah mencoba memperluas kelas DeriverBase, khususnya mengganti metode getDerivativeDefinitions. Saya membuat tab itu sendiri dengan memperluas LocalTaskDefault dan mengganti metode getRouteParameters. Tab muncul ketika Anda mengunjungi jalur pengguna Drupal standar seperti www.mysite.com/user/1/ atau www.mysite.com/user/1/edit. Namun, ketika kami menambahkan rute pengguna kustom baru kami seperti www.mysite.com/user/1/subscribe, tidak ada tab yang muncul. Apakah ada cara khusus untuk mendefinisikan tugas menu lokal pada rute khusus? Contoh kode:
$this->derivatives['recurly.subscription_tab'] = [
'title' => $this->t('Subscription'),
'weight' => 5,
'route_name' => 'recurly.subscription_list',
'base_route' => "entity.$entity_type.canonical",
];
foreach ($this->derivatives as &$entry) {
$entry += $base_plugin_definition;
}
Terima kasih sebelumnya atas bantuan apa pun.
Jawaban:
Seperti yang disarankan oleh Berdir, Anda dapat melihat modul Devel dan bagaimana mengimplementasikannya. Kode berikut "diekstraksi" dari Devel
1) Buat rute
Buat file mymodule.routing.yml di dan di dalam menentukan callback rute (yang digunakan untuk membuat rute dinamis)
Buat kelas MyModuleRoutes untuk menghasilkan rute dinamis Anda di src / Routing
2) Buat tugas lokal yang dinamis
Buat file mymodule.links.task.yml dan di dalamnya tentukan deriver
Buat kelas MyModuleLocalTasks untuk menghasilkan rute dinamis Anda di src / Plugin / Derivative
3) Buat pengontrol
Buat kelas MyModuleController di src / Controller
sumber