亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁(yè) 后端開(kāi)發(fā) php教程 Drupal 8自定義插件類(lèi)型

Drupal 8自定義插件類(lèi)型

Feb 16, 2025 am 10:15 AM

> drupal 8的魯棒插件系統(tǒng),使后端開(kāi)發(fā)人員具有可重復(fù)使用的功能。本文(兩個(gè)部分中的第一部分)詳細(xì)信息構(gòu)建功能,啟用具有節(jié)點(diǎn)實(shí)體的自定義表單,從而允許節(jié)點(diǎn)束的配置與節(jié)點(diǎn)顯示旁邊使用各種形式類(lèi)型。 通過(guò)擴(kuò)展提供的基類(lèi)可以輕松定義新的形式類(lèi)型。 (有關(guān)完整的代碼示例,請(qǐng)參閱此存儲(chǔ)庫(kù)

)。

> Drupal 8 Custom Plugin Types

本教程避免了深入的插件力學(xué),假設(shè)對(duì)基本理論熟悉。我們將使用兩個(gè)接口和六個(gè)類(lèi)構(gòu)建自定義插件類(lèi)型(看似大的數(shù)字,但大多是直截了當(dāng)?shù)臉影宕a。 第二部分將演示將這些可重復(fù)使用的形式附加到節(jié)點(diǎn)上。

> 密鑰概念:

  • > Drupal 8的插件系統(tǒng)促進(jìn)可重復(fù)使用的功能,為節(jié)點(diǎn)實(shí)體啟用自定義表單。 可以將節(jié)點(diǎn)捆綁包配置為在節(jié)點(diǎn)顯示內(nèi)使用多個(gè)表單類(lèi)型。
  • >插件管理器,對(duì)于插件發(fā)現(xiàn)和加載必不可少的,利用Drupal的默認(rèn)基類(lèi)以易于擴(kuò)展。 所有插件都必須實(shí)現(xiàn)定義的接口。
  • >插件定義使用包含關(guān)鍵信息的注釋?zhuān)翰寮幽夸?,所需界面和定義插件屬性的注釋類(lèi)。
  • >自定義插件類(lèi)型需要所有插件可擴(kuò)展的基類(lèi)。該類(lèi)實(shí)現(xiàn)界面,并使用依賴(lài)注入
  • 服務(wù),對(duì)于形式結(jié)構(gòu)必不可少。 該插件與表單類(lèi)交互;下一步是將這些表單與節(jié)點(diǎn)顯示。form_builder>

>插件管理器:>

插件管理器,對(duì)于發(fā)現(xiàn)和加載插件至關(guān)重要,它擴(kuò)展了Drupal的

。 在模塊的DefaultPluginManager目錄中,/src>包含:ReusableFormManager.php>

<?php namespace Drupal\reusable_forms;

use Drupal\Core\Plugin\DefaultPluginManager;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;

class ReusableFormsManager extends DefaultPluginManager {

  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) {
    parent::__construct('Plugin/ReusableForm', $namespaces, $module_handler, 'Drupal\reusable_forms\ReusableFormPluginInterface', 'Drupal\reusable_forms\Annotation\ReusableForm');
    $this->alterInfo('reusable_forms_info');
    $this->setCacheBackend($cache_backend, 'reusable_forms');
  }
}
>這擴(kuò)展了

,覆蓋了構(gòu)造函數(shù)。 關(guān)鍵參數(shù)定義:DefaultPluginManager

  • :插件子目錄。Plugin/ReusableForm
  • :必需的插件接口。Drupalreusable_formsReusableFormPluginInterface
  • :定義插件屬性的注釋類(lèi)。Drupalreusable_formsAnnotationReusableForm>
一個(gè)Alter Hook(

)允許模塊修改插件定義,并配置了緩存后端。 reusable_forms_info

插件接口:

接口(in

)定義了所有插件必須實(shí)現(xiàn)的方法:>
<?php namespace Drupal\reusable_forms;

use Drupal\Core\Plugin\DefaultPluginManager;
use Drupal\Core\Cache\CacheBackendInterface;
use Drupal\Core\Extension\ModuleHandlerInterface;

class ReusableFormsManager extends DefaultPluginManager {

  public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler) {
    parent::__construct('Plugin/ReusableForm', $namespaces, $module_handler, 'Drupal\reusable_forms\ReusableFormPluginInterface', 'Drupal\reusable_forms\Annotation\ReusableForm');
    $this->alterInfo('reusable_forms_info');
    $this->setCacheBackend($cache_backend, 'reusable_forms');
  }
}

>getName()>返回插件名稱(chēng); buildForm()接受實(shí)體,并返回實(shí)現(xiàn)>表單的渲染數(shù)組。 它擴(kuò)展了Drupalreusable_formsFormReusableFormInterface>和PluginInspectionInterface,以添加功能和依賴(lài)注入。ContainerFactoryPluginInterface>

>插件注釋?zhuān)?ante> 注釋類(lèi)(

in

)定義了插件屬性:ReusableForm.php /src/Annotation

<?php
namespace Drupal\reusable_forms;

use Drupal\Core\Entity\EntityInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Component\Plugin\PluginInspectionInterface;

interface ReusableFormPluginInterface extends PluginInspectionInterface, ContainerFactoryPluginInterface {

  public function getName();

  public function buildForm($entity);
}
,

id(完全限定的表單名稱(chēng))在此處定義。name> form

>插件基類(lèi):

插件base類(lèi)(

in

)提供默認(rèn)值:ReusableFormPluginBase.php> /src

這擴(kuò)展了
<?php
namespace Drupal\reusable_forms\Annotation;

use Drupal\Component\Annotation\Plugin;

/**
 * @Annotation
 */
class ReusableForm extends Plugin {

  public $id;
  public $name;
  public $form;
}
,實(shí)現(xiàn)了,并使用依賴(lài)性注入

>。 使用注釋中指定的表單類(lèi)實(shí)現(xiàn)PluginBaseReusableFormPluginInterface。form_builder> getName() buildForm()形式接口和基類(lèi):

> 一個(gè)簡(jiǎn)單的表單接口(in

)和基類(lèi)(

inReusableFormInterface.php>)是為了一致性而創(chuàng)建的:(這些在原始響應(yīng)中顯示,并且在此處未重復(fù)此處) 。/src/Form ReusableFormBase.php/src/Form>結(jié)論(第1部分):>

>這第一部分設(shè)置了自定義插件類(lèi)型,并準(zhǔn)備將其與表單類(lèi)集成。 第二部分將涵蓋用節(jié)點(diǎn)顯示這些表格,涉及節(jié)點(diǎn)類(lèi)型的配置并在內(nèi)容視圖模式中呈現(xiàn)形式。

以上是Drupal 8自定義插件類(lèi)型的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線(xiàn)人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門(mén)話(huà)題

PHP正則密碼強(qiáng)度 PHP正則密碼強(qiáng)度 Jul 03, 2025 am 10:33 AM

判斷密碼強(qiáng)度需結(jié)合正則與邏輯處理,基礎(chǔ)要求包括:1.長(zhǎng)度不少于8位;2.至少含小寫(xiě)字母、大寫(xiě)字母、數(shù)字;3.可加入特殊字符限制;進(jìn)階方面需避免連續(xù)重復(fù)字符及遞增/遞減序列,這需PHP函數(shù)檢測(cè);同時(shí)應(yīng)引入黑名單過(guò)濾常見(jiàn)弱密碼如password、123456;最終建議結(jié)合zxcvbn庫(kù)提升評(píng)估精度。

PHP變量范圍解釋了 PHP變量范圍解釋了 Jul 17, 2025 am 04:16 AM

PHP變量作用域常見(jiàn)問(wèn)題及解決方法包括:1.函數(shù)內(nèi)部無(wú)法訪(fǎng)問(wèn)全局變量,需使用global關(guān)鍵字或參數(shù)傳入;2.靜態(tài)變量用static聲明,只初始化一次并在多次調(diào)用間保持值;3.超全局變量如$_GET、$_POST可在任何作用域直接使用,但需注意安全過(guò)濾;4.匿名函數(shù)需通過(guò)use關(guān)鍵字引入父作用域變量,修改外部變量則需傳遞引用。掌握這些規(guī)則有助于避免錯(cuò)誤并提升代碼穩(wěn)定性。

如何在PHP中牢固地處理文件上傳? 如何在PHP中牢固地處理文件上傳? Jul 08, 2025 am 02:37 AM

要安全處理PHP文件上傳需驗(yàn)證來(lái)源與類(lèi)型、控制文件名與路徑、設(shè)置服務(wù)器限制并二次處理媒體文件。1.驗(yàn)證上傳來(lái)源通過(guò)token防止CSRF并通過(guò)finfo_file檢測(cè)真實(shí)MIME類(lèi)型使用白名單控制;2.重命名文件為隨機(jī)字符串并根據(jù)檢測(cè)類(lèi)型決定擴(kuò)展名存儲(chǔ)至非Web目錄;3.PHP配置限制上傳大小及臨時(shí)目錄Nginx/Apache禁止訪(fǎng)問(wèn)上傳目錄;4.GD庫(kù)重新保存圖片清除潛在惡意數(shù)據(jù)。

在PHP中評(píng)論代碼 在PHP中評(píng)論代碼 Jul 18, 2025 am 04:57 AM

PHP注釋代碼常用方法有三種:1.單行注釋用//或#屏蔽一行代碼,推薦使用//;2.多行注釋用/.../包裹代碼塊,不可嵌套但可跨行;3.組合技巧注釋如用/if(){}/控制邏輯塊,或配合編輯器快捷鍵提升效率,使用時(shí)需注意閉合符號(hào)和避免嵌套。

發(fā)電機(jī)如何在PHP中工作? 發(fā)電機(jī)如何在PHP中工作? Jul 11, 2025 am 03:12 AM

AgeneratorinPHPisamemory-efficientwaytoiterateoverlargedatasetsbyyieldingvaluesoneatatimeinsteadofreturningthemallatonce.1.Generatorsusetheyieldkeywordtoproducevaluesondemand,reducingmemoryusage.2.Theyareusefulforhandlingbigloops,readinglargefiles,or

撰寫(xiě)PHP評(píng)論的提示 撰寫(xiě)PHP評(píng)論的提示 Jul 18, 2025 am 04:51 AM

寫(xiě)好PHP注釋的關(guān)鍵在于明確目的與規(guī)范,注釋?xiě)?yīng)解釋“為什么”而非“做了什么”,避免冗余或過(guò)于簡(jiǎn)單。1.使用統(tǒng)一格式,如docblock(/*/)用于類(lèi)、方法說(shuō)明,提升可讀性與工具兼容性;2.強(qiáng)調(diào)邏輯背后的原因,如說(shuō)明為何需手動(dòng)輸出JS跳轉(zhuǎn);3.在復(fù)雜代碼前添加總覽性說(shuō)明,分步驟描述流程,幫助理解整體思路;4.合理使用TODO和FIXME標(biāo)記待辦事項(xiàng)與問(wèn)題,便于后續(xù)追蹤與協(xié)作。好的注釋能降低溝通成本,提升代碼維護(hù)效率。

快速PHP安裝教程 快速PHP安裝教程 Jul 18, 2025 am 04:52 AM

ToinstallPHPquickly,useXAMPPonWindowsorHomebrewonmacOS.1.OnWindows,downloadandinstallXAMPP,selectcomponents,startApache,andplacefilesinhtdocs.2.Alternatively,manuallyinstallPHPfromphp.netandsetupaserverlikeApache.3.OnmacOS,installHomebrew,thenrun'bre

學(xué)習(xí)PHP:初學(xué)者指南 學(xué)習(xí)PHP:初學(xué)者指南 Jul 18, 2025 am 04:54 AM

易于效率,啟動(dòng)啟動(dòng)tingupalocalserverenverenvirestoolslikexamppandacodeeditorlikevscode.1)installxamppforapache,mysql,andphp.2)uscodeeditorforsyntaxssupport.3)

See all articles