Saya perlu menambahkan tab khusus di halaman profil pengguna. Saya mendefinisikan rute saya seperti di bawah ini:
mymodule.routing.yml
mymodule.account:
path: '/user/{user}/custom'
defaults:
_form: '\Drupal\mymodule\Form\MyModuleUserSettingsForm'
_title: 'Custom Settings'
user: \d+
requirements:
_permission: 'access content'
mymodule.links.task.yml
mymodule.account:
title: Mymodule Settings
route_name: mymodule.account
base_route: entity.user.canonical
mymodule.links.menu.yml
mymodule.account:
title: My module Settings
parent: entity.user.canonical
route_name: mymodule.account
Kemudian setelah tab cache jelas muncul di halaman profil. Tetapi ketika saya membuka url / user / 1 / custom saya melihat halaman tidak menemukan pesan.
Jawaban:
Masalah Anda ada di
mymodule.routing.yml
file, masalah besar adalah tempatuser: \d+
, baris ini harus di bawahrequirements:
bagian, masalah lainnya adalah lekukan. Jadi kode terakhirnya harus:Dan tentu saja Anda memerlukan definisi bentuk kelas di
src/Form/MyModuleUserSettingsForm.php
Dan
mymodule.info.yml
file untuk melengkapi modul Anda (dalam hal ini bernama mymodule)Referensi: Struktur rute
sumber
user:
atau ke mana harus pergi ... Mungkin dokumen perlu diperbaiki / diedit? atau apakah saya melewatkan sesuatu?Ada dua cara untuk memuat formulir menggunakan rute. Anda bisa memuat panggilan balik yang memuat formulir dan mengembalikannya sebagai bagian dari susunan bentukan, atau Anda bisa memuat formulir secara langsung dengan mengatur parameter _form di bawah default.
Anda dapat mencari basis kode untuk menemukan contoh yang berfungsi, menyalinnya ke mymodule.routing.yml Anda, mengeditnya sesuai kebutuhan Anda dan kemudian membangun kembali cache.
Memuat formulir dari panggilan balik:
Ada contoh yang berfungsi di modul kontak:
/core/modules/contact/contact.routing.yml
Kemudian di /core/modules/contact/src/Controller/ContactController.php
Anda dapat melihat contoh cara memuat formulir di callback:
Memuat formulir langsung dari rute:
Jika Anda ingin memuat form secara langsung menggunakan default _form, ada contoh di modul shortcut di /core/modules/shortcut/shortcut.routing.yml
Dalam hal ini, pengguna dilewatkan sebagai parameter ke formulir, lihat /core/modules/shortcut/src/Form/SwitchShortcutSet.php
sumber
Beberapa hal yang dapat saya temukan begitu saja ...
Anda punya SEMUA yang bernama mymodule.account. Saya akan melakukan diversifikasi sedikit. Pertimbangkan untuk menggunakan ini untuk halaman tugas:
Saya juga tidak percaya Anda perlu sesuatu dalam menu baik untuk ini.
Di antara keduanya, Anda harus baik-baik saja! Jangan ragu untuk menghubungi saya secara langsung jika Anda tidak dapat mengetahuinya karena saya - HANYA - membuat ini berfungsi pada port D8 saya dari Terapkan Untuk Peran!
sumber
Dalam modulename.routing.yml Anda harus memberikan argumen pengguna seperti di bawah ini
dan di modulename.links.task.yml Anda memiliki kode seperti di bawah ini
sumber