Rumah > pembangunan bahagian belakang > tutorial php > Drupal 8 Tetapan Pihak Ketiga dan Pseudo-Fields

Drupal 8 Tetapan Pihak Ketiga dan Pseudo-Fields

Christopher Nolan
Lepaskan: 2025-02-16 13:14:09
asal
996 orang telah melayarinya

Modul Drupal 8 ini mencipta bentuk yang boleh diguna semula yang boleh dilampirkan pada berkas nod yang berbeza. Mari kita bina sistem bentuk yang mudah, namun berkuasa dan boleh diguna semula. Matlamatnya adalah dengan mudah memuat borang pada setiap halaman nod, memilih jenis borang per node bundle.

Drupal 8 Third Party Settings and Pseudo-Fields

Kami telah mencipta jenis plugin tersuai,

, dengan kelas plugin asas untuk lanjutan. Setiap plugin berinteraksi dengan kelas bentuk yang ditakrifkan dalam anotasinya. Begitu juga, kelas bentuk asas menyediakan asas untuk bentuk baru. ReusableForm

Seterusnya, kami akan mengkonfigurasi jenis nod teras untuk menggunakan plugin ini dan menjadikan borang yang sesuai semasa paparan nod. Pertama, mari buat plugin

mudah. ​​ReusableForm

Konsep Utama:

  • plugin reusableform: Jenis plugin tersuai yang membolehkan pemilihan borang per node bundle.
  • Kelas bentuk: mentakrifkan struktur dan logik setiap bentuk individu.
  • Plugin Manager Service: Menyediakan akses kepada Plugin yang tersedia. ReusableForm
  • Tetapan pihak ketiga: menyimpan pemilihan plugin setiap jenis nod.
  • medan pseudo: Membolehkan memberikan borang yang dipilih pada paparan nod.

Membuat plugin pertama

dalam direktori modul

, buat src/Form: BasicForm.php

<?php
namespace Drupal\reusable_forms\Form;

use Drupal\Core\Form\FormStateInterface;

class BasicForm extends ReusableFormBase {

  public function getFormId() {
    return 'basic_form';
  }

  public function buildForm(array $form, FormStateInterface $form_state) {
    $form = parent::buildForm($form, $form_state);
    return $form;
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {
    // Handle form submission.
  }
}
Salin selepas log masuk
Ini memanjangkan borang asas kami, melaksanakan kaedah yang diperlukan. Kaedah

menggunakan logik kelas asas. Pengendalian penyerahan ditinggalkan untuk pelaksanaan kemudian. buildForm

Sekarang, buat plugin dalam

: src/Plugin/ReusableForm/BasicForm.php

<?php
namespace Drupal\reusable_forms\Plugin\ReusableForm;

use Drupal\reusable_forms\ReusableFormPluginBase;

/**
 * @ReusableForm(
 *   id = "basic_form",
 *   name = @Translation("Basic Form"),
 *   form = "Drupal\reusable_forms\Form\BasicForm"
 * )
 */
class BasicForm extends ReusableFormPluginBase {}
Salin selepas log masuk
Anotasi mentakrifkan kelas ID, nama, dan kelas yang berkaitan.

Konfigurasi jenis nod Untuk mengakses dan memuatkan plugin, kami akan menjadikan pengurus plugin perkhidmatan. Dalam

:

reusable_forms.services.yml Seterusnya, ubah borang Edit Jenis Node (

):
services:
  plugin.manager.reusable_forms:
    class: Drupal\reusable_forms\ReusableFormsManager
    parent: default_plugin_manager
Salin selepas log masuk

reusable_forms.module Ini menambah kotak semak untuk membolehkan borang yang boleh diguna semula dan senarai pilih untuk memilih plugin. Panggilan balik

menyimpan pemilihan dalam tetapan pihak ketiga.
use Drupal\Core\Form\FormStateInterface;
use Drupal\node\NodeTypeInterface;

function reusable_forms_form_node_type_form_alter(&$form, FormStateInterface $form_state) {
  // ... (Code to add checkbox and radios for enabling and selecting forms) ...
  $form['#entity_builders'][] = 'reusable_forms_form_node_type_form_builder';
}

function reusable_forms_form_node_type_form_builder($entity_type, NodeTypeInterface $type, &$form, FormStateInterface $form_state) {
  // ... (Code to save/unset third-party settings) ...
}
Salin selepas log masuk

#entity_builders Skema konfigurasi (

)

reusable_forms.schema.yml

paparan nod
node.type.*.third_party.reusable_forms:
  type: mapping
  label: 'Reusable Forms'
  mapping:
    enabled:
      type: boolean
      label: 'Enable reusable forms'
    plugin:
      type: string
      label: 'Form Plugin'
Salin selepas log masuk

Buat medan pseudo ():

reusable_forms.module

mentakrifkan medan pseudo, dan
use Drupal\node\Entity\NodeType;
use Drupal\Core\Entity\Display\EntityViewDisplayInterface;
use Drupal\Core\Entity\EntityInterface;

function reusable_forms_entity_extra_field_info() {
  // ... (Code to add 'reusable_form' pseudo field to enabled node types) ...
}

function reusable_forms_node_view(array &$build, EntityInterface $entity, EntityViewDisplayInterface $display, $view_mode, $langcode) {
  // ... (Code to render the form using the plugin manager) ...
}
Salin selepas log masuk
membuat bentuk yang dipilih.

hook_entity_extra_field_info Ini melengkapkan struktur asas. Ingatlah untuk membersihkan cache selepas membuat perubahan. Penjelasan terperinci ini memberikan asas yang kukuh untuk membina fungsi bentuk yang lebih kompleks di Drupal 8. hook_node_view

Atas ialah kandungan terperinci Drupal 8 Tetapan Pihak Ketiga dan Pseudo-Fields. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan