Özel bir kancayı nasıl oluşturur ve kullanırım?


10

Burada bir öneri vardı, ama cevap olmayan bir soru gönderdim . Herkes Drupal 8'de, diğer modüllerin bir ana modül tarafından oluşturulan bir içindekileri güncellemesine izin verecek özel bir kancanın nasıl uygulanacağı konusunda tavsiyede bulunuyor mu? İçindekiler dizisi sıralanmamış bir liste olacaktır.


2
Burada "Bir kanca tanımlamak için:" bölümündeki kısma bir göz atın, bu yardımcı olur mu?
Clive

Sadece kısmen. Bu, çocuk işlevinin kullanması için bir kanca oluşturmayı açıklar, ancak üst modülün içeriği nasıl oluşturduğu hakkında hiçbir şey açıklanmaz. Ebeveyn, $ output ['table_of_contents'] öğesine içerik eklemek için bir denetleyici kullanıyor mu ve daha sonra ebeveynin kancası alt öğeden döndürülen verileri bu diziye ekliyor mu?
Kevin Nowaczyk

2
@KevinNowaczyk kancanın amacına bağlıdır. Bir kanca, işleme için spesifik değildir, ancak bunun için kullanılabilir. İçerik sağlamak için özel bir kanca oluşturmak ve kancayı içeriğe ihtiyacınız olan yerde çağırırsanız, çalışır. Kanca özel ve işleviniz için yeni olduğundan, kancanın sonuçlarını nasıl sağlaması gerektiğini tanımlamanız gerekir. Daha sonra üst oluşturma işleviniz sırasında kancayı çağırırsanız, sonuçları kullanılabilir bir biçimde alabilirsiniz.
Neograph734

Yanıtlar:


8

Bu bölüm üst modüldeki bir denetleyicide bulunur:

$plugin_items = [];
// Call modules that implement the hook, and let them add items.
\Drupal::moduleHandler()->alter('flot_examples_toc', $plugin_items);
if (count($plugin_items > 0)) {
  $output['plugins'] = [
    '#title' => 'Plugins',
    '#theme' => 'item_list',
    '#items' => $plugin_items,
  ];
}

Ve bu alt [modül] .module dosyasında bulunur.

use Drupal\Core\Url;

function mymodule_flot_examples_toc_alter(&$item_list) {
  $options = [
    ':one' => Url::fromRoute('flot_spider_examples.example')->toString(),
  ];
  $item_list[] = t('<a href=":one">Spider Chart</a> (with spider plugin)', $options);
}

Üst öğe bir dizi oluşturur ve bunu referans olarak çocuklara iletir. Diziyi, öğeye öğe ekleyerek değiştirebilirler. Üst öğe bunu oluşturma dizisine ekler.


5

Diğer geliştiricilerin kullanması için drupal 8'de özel bir kanca oluşturmak ve kullanmak istiyorsanız, basitlik uğruna

önce diğerlerinin kancalarınızı mymodule.api.php dosyasında tanımlamasına yardımcı olmak için bu kanca gerekli olan herhangi bir şey üzerinde etkili olabilir.

misal:

 // my hook 
 function hook_mymodule_alter_something(array &$data) {
   // here others will make a module that will call this to alter "$data"
 }

modülünüzde gerektiğinde.

 \Drupal::moduleHandler()->invokeAll('mymodule_alter_something', [&$data]);

daha sonra diğer geliştirici bunu kullanarak

function MYOTHERMODULE_mymodule_alter_something($data) {
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.