Dapatkan id item semasa dalam joomla hosting
Dalam pengawal komponen adat saya saya mempunyai fungsi save (). Pada akhirnya ia memaparkan mesej dan mengubah hala ke url
Saya menghadapi masalah untuk melakukan perkara yang berikut:
menu 1. menggunakan parameter dari bidang adat dan bukannya JText tali. Jika saya menggunakan di dalam ini fungsi:
Saya mendapatkan notis ralat:
$ Mesej adalah nama medan menu adat saya ditakrif dalam fail xml. Jika saya membuat panggilan terus dari pandangan, maka ia adalah ok.
2.Get menu itemid aktif dan menggunakannya dalam setRedirect ().
Saya mendapatkan itemid kosong di URL jika saya menggunakan ia seperti ini:
Saya telah mendapati banyak maklumat tentang memanggil parameter menu dalam komponen tetapi tiada ia membantu saya
Selepas beberapa ujian, saya dapat meniru isu ini:
** Borang A pelencongan ke paparan tanpa item menu atau pelencongan kepada dirinya agak ke url seperti ini:
(Ia tidak kira jika lihat mempunyai item menu atau tidak, ini adalah hanya bodoh Joomla routing.) **
Oleh itu perkara berikut perlu dilakukan untuk mengelakkan ralat:
1) pandangan itu perlu dikaitkan dengan item menu dilaman Joomla
2) url untuk borang di dalam frontend harus / menu-alias
3) tindakan borang yang tidak perlu mengubah hala ke paparan lain, lebih baik kosong
4) borang yang hendaklah mengandungi input tersembunyi dengan tugas
Kemudian post anda dan menyelamatkan redirection dalam kerja-kerja pengawal seperti azimat, kerana anda beroperasi dalam konteks item menu (url).
Tetapi, jika anda mengubah hala ke paparan lain atau melalui JRoute untuk pandangan yang sama tanpa menyimpan id item semasa, anda akan meninggalkan konteks item menu ( "komponen / mycomponent / MyView").
Ini berlaku banyak dalam Joomla, kerana sistem router semasa tidak daftar url yang diberikan terhadap perkara menu di dalam pangkalan data. Untuk mengelakkan ini, anda boleh melakukan tindakan berikut:
1) Memanjangkan router komponen anda dengan fungsi yang mencari jadual item menu untuk url semasa dan mengembalikan item id / menu item. (Saya telah lakukan yang telah pada masa lalu dan ia berfungsi.)
2) Tambah bidang tersembunyi dalam borang anda yang mengandungi pandangan id item, tugas dan sasaran (cara yang betul dalam Joomla to).
3) Ubah hala url seperti "komponen / mycomponent / MyView" ke jalan url yang betul.
4) Anda boleh menetapkan fallbacks dalam params komponen untuk setiap paparan. Ini akan rantai id item di sebelah params komponen dan bukan pandangan kepada jalan url. View1 -> jatuh turun -> Pilih Menu dirantai Item
$ ItemId = $ params-> get ($ mycurrentviewname);
Jangan gunakan $ menu-> getActive () jika tidak benar-benar perlu, kerana sistem routing Joomla bodoh. Saya sedang mencadangkan untuk menetapkan item menu secara manual entah bagaimana.
Aku berkata, kesilapan anda adalah suatu tempat di awal routing. Ini mungkin hanya url anda yang membawa kepada borang anda atau redirect selepas menyerahkan borang untuk tujuan tanpa item menu atau ke url yang tidak mengandungi itemId.
Tambahkan ini kepada fungsi menjimatkan anda antara $ itemid dan $ pesanan:
Kemudian menambah "Tugas = saveItemid = 101" kepada url yang mengembalikan mesej ralat anda. (Tukar 101 to id item anda!)
Anda perlu diarahkan dengan betul sekarang.