Dalam Drupal 7 ini mungkin.
$link = array(
'#type' => 'link',
'#title' => t('My Title'),
'#href' => 'node/1',
);
drupal_render($link);
Tapi saya sudah mencoba ini dengan Drupal 8, dan tidak menghasilkan apa-apa.
$link = array(
'#type' => 'link',
'#title' => t('test'),
'#url' => 'node/1',
);
drupal_render($link);
Apakah ada cara saya dapat membuat tautan tanpa harus memanggil plugin Tautan secara langsung, atau membuat fungsi tema saya sendiri?
Saya menamai formatter grup grup, yang harus menampilkan array render.
Penggunaan drupal_render()
sudah usang dan tidak boleh dipanggil secara langsung; Saya menggunakannya di sini untuk membuat contoh saya lebih jelas.
Jawaban:
Saya pikir masalah dengan kode Drupal 8 Anda adalah '#url' membutuhkan objek URL.
URL eksternal
URL internal dari suatu rute
Di Drupal 8 Anda tidak seharusnya membuat sendiri. Saat mengirim kode dari Drupal 7, hapus semua render dan kembalikan hanya render array.
sumber
drupal_render()
langsung, itu hanya untuk contoh.Sebagai alternatif, Anda juga dapat menggunakan
\Drupal\Core\Link::fromTextAndUrl()
atau\Drupal\Core\Link::createFromRoute()
.Twig dapat mencetak apa adanya, Anda juga bisa mendapatkan array render dengan menelepon
\Drupal\Core\Link::toRenderable()
. Array render yang dihasilkan sama dengan membangunnya dari tangan.sumber
Berikut adalah contoh cara merender tautan di Drupal 8 dengan kelas khusus. Agak aneh, tetapi opsi diteruskan ke URL, bukan fungsi tautan.
Ini berguna dalam formatter bidang, yang mengharapkan markup dikembalikan. Jika Anda melakukan ini di tempat lain, yang terbaik adalah mengonversinya menjadi item array render tautan.
sumber