国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 后端開發(fā) php教程 在 Joomla 中使用模態(tài)選擇示例創(chuàng)建自定義表單字段類型

在 Joomla 中使用模態(tài)選擇示例創(chuàng)建自定義表單字段類型

Nov 17, 2024 am 10:18 AM

使用 Joomla 5 中的 ModalSelect 表單字段類型,可以在開發(fā)擴(kuò)展時(shí)使用類別、制造商和搜索在模式窗口中進(jìn)行過濾,從而簡化從數(shù)千個(gè)產(chǎn)品中查找正確產(chǎn)品的過程。

簡介

在與客戶合作的過程中,會遇到各種級別的任務(wù):有人需要一個(gè) 5-6 頁的簡單網(wǎng)站。有人需要大量的商品目錄或使用 REST API 與第三方系統(tǒng)集成的在線商店。其他人需要非標(biāo)準(zhǔn)功能,但沒有可用的流行解決方案。

Joomla 非常適合開發(fā),并允許您創(chuàng)建易于維護(hù)的代碼。如果需求遵循 CMS 核心,那么它對所有這些情況都有答案。

要完成一個(gè)大項(xiàng)目,我們需要將其拆分為更小的任務(wù),我想在本文中討論解決其中一個(gè)任務(wù)。

初始數(shù)據(jù)

客戶已經(jīng)在 J??oomla (JoomShopping) 在線商店的熱門組件之一上創(chuàng)建了產(chǎn)品目錄。他們可以選擇產(chǎn)品的參數(shù),將其放入購物車并進(jìn)行購買。一切如常。但是,現(xiàn)在您需要添加為產(chǎn)品創(chuàng)建圖形布局的功能。例如,您的產(chǎn)品是杯子或 T 恤。在購買之前,您可以去找產(chǎn)品設(shè)計(jì)師,上傳您的徽標(biāo)或照片,編寫文本,然后將此布局附加到在線商店的訂單中。付款后,布局直接進(jìn)入生產(chǎn),圖像和文字將被應(yīng)用到您的杯子上并發(fā)送到地址。

由于此功能的實(shí)現(xiàn)非常耗時(shí),因此將其創(chuàng)建為單獨(dú)的產(chǎn)品設(shè)計(jì)器組件。并且數(shù)據(jù)提供程序插件已經(jīng)創(chuàng)建,允許您使用一個(gè)或另一個(gè)電子商務(wù)組件。

其中一個(gè)小的應(yīng)用任務(wù)是在在線商店組件的商品和產(chǎn)品設(shè)計(jì)器組件中的商品之間創(chuàng)建連接。對于將來處理內(nèi)容的內(nèi)容管理者來說,這應(yīng)該是方便且直觀的。因此,僅創(chuàng)建一個(gè)文本字段來指示所需產(chǎn)品的 ID 號是不夠的。一個(gè)網(wǎng)上商店可能只有幾十種產(chǎn)品,那么選擇一款產(chǎn)品進(jìn)行交流并不是一件很困難的事情。如果有數(shù)千種產(chǎn)品,則按參數(shù)搜索和過濾產(chǎn)品的功能就很重要。如果您可以按類別、制造商過濾產(chǎn)品列表,或按名稱在數(shù)百個(gè)其他產(chǎn)品中查找產(chǎn)品,您的工作將變得更快、更輕松。

Creating a custom Form field type in Joomla sing the Modal Select example
看視頻

此字段與編輯器按鈕插件(editors-xtd 組)的工作非常相似,其中用于選擇的數(shù)據(jù)顯示在模式窗口中:文章的鏈接、模塊的簡短代碼等。

一點(diǎn)理論

在Joomla管理員面板中,有不同的字段需要填充來自其他組件的數(shù)據(jù):指定文章、菜單項(xiàng)、聯(lián)系人、產(chǎn)品等。通常這些字段被設(shè)計(jì)為選擇選項(xiàng)下拉列表,它們可以設(shè)計(jì)為帶有數(shù)據(jù)列表的輸入類型=“文本”,但也有方便的字段顯示所需實(shí)體的列表,具有過濾、搜索和分頁功能。不僅站點(diǎn)內(nèi)的源(各種組件、插件)可以充當(dāng)數(shù)據(jù)源,還可以通過 REST API 提供第三方服務(wù):CRM、交付服務(wù)、外部數(shù)據(jù)庫、其他 Joomla 站點(diǎn)等等。

當(dāng)在菜單項(xiàng)中選擇文章(例如“文章 - 單篇文章”、“聯(lián)系人 - 單個(gè)聯(lián)系人”)或創(chuàng)建菜單項(xiàng)的別名 - “系統(tǒng)鏈接 - 菜單”時(shí),我們都見過這些字段的作用項(xiàng)目別名”。不過,讓我們提醒自己它們是什么樣子的。

模態(tài)文章選擇窗口。

Creating a custom Form field type in Joomla sing the Modal Select example
模式單一聯(lián)系人選擇窗口。

Creating a custom Form field type in Joomla sing the Modal Select example

Joomla中模態(tài)選擇字段的機(jī)會

讓我們仔細(xì)看看這些字段 - 它們到底允許您做什么。在內(nèi)心深處,我們知道該字段的主要工作是獲取所選實(shí)體的ID并將該ID放入文本字??段。但在屏幕上我們看到了其他東西 - 我們看到的不是 ID 號,而是文章或聯(lián)系人的標(biāo)題。很好很方便。您不需要記住 ID 為 1452704 的文章的名稱。此外,視頻清楚地顯示,如果該字段已經(jīng)有值,則會出現(xiàn)“清除”按鈕。它會重置字段的值并允許您再次單擊“選擇”按鈕。

Creating a custom Form field type in Joomla sing the Modal Select example

在某些情況下,我們有機(jī)會在創(chuàng)建菜單項(xiàng)的過程中創(chuàng)建選定類型的實(shí)體 - 文章、聯(lián)系人等

。此按鈕的工作原理考慮了 ACL - Joomla 中的訪問權(quán)限分離。

假設(shè)您正在構(gòu)建一個(gè)網(wǎng)站并創(chuàng)建一個(gè)“聯(lián)系人”頁面。如果您沒有一堆結(jié)構(gòu)復(fù)雜的公司分支機(jī)構(gòu),那么這只是“未分類”類別中常見的 Joomla 文章。它已經(jīng)擁有文本或變量形式的所有聯(lián)系人。在古代,您必須先創(chuàng)建文章,然后轉(zhuǎn)到菜單項(xiàng)并為其創(chuàng)建菜單項(xiàng)。你現(xiàn)在不必這樣做。

Creating a custom Form field type in Joomla sing the Modal Select example

如果字段已經(jīng)有值,那么在某些情況下,可以在創(chuàng)建菜單項(xiàng)的過程中編輯所選實(shí)體(文章、菜單項(xiàng)等)。

因此,使用模式窗口中的選擇字段,我們可以:

  • 選擇
  • 創(chuàng)建
  • 編輯
  • 清晰

這就是我眼前的情況。但在 Joomla 的深處還有一個(gè)奇怪的 urlCheckin 參數(shù),它允許您將選定的值發(fā)送到字段中指定的 url。值得注意的是,Joomla 中的這一功能已經(jīng)逐漸發(fā)展了相當(dāng)長的時(shí)間。然而,可以滿足您的需求的單獨(dú)通用字段類型僅出現(xiàn)在 Joomla 5 中。甚至在 Joomla 4 中也沒有。

Joomla管理面板界面的Form構(gòu)造函數(shù)的字段是如何排列的?

以前,這個(gè)構(gòu)造函數(shù)稱為 JForm。我假設(shè)并非所有讀者都擁有 IDE 這樣的開發(fā)工具 - 開發(fā)環(huán)境 - PHP Storm 或 VS Code,因此我將嘗試提供額外的指導(dǎo)來導(dǎo)航代碼庫。

在 Joomla 中,邏輯與視圖(實(shí)際的 HTML 輸出)是分離的,因此我們將同時(shí)在多個(gè)地方對其進(jìn)行探索。

邏輯是表單類

邏輯是表單類。在 Joomla 5 中,F(xiàn)orm 類文件位于 libraries/src/Form 中。我們檢查這些文件是為了了解邏輯本身、數(shù)據(jù)會發(fā)生什么以及如何使用它。

Creating a custom Form field type in Joomla sing the Modal Select example

簡而言之,F(xiàn)orm 構(gòu)造函數(shù)接收帶有字段描述的 XML。讀取數(shù)據(jù)(字段類型、來自 addfieldprefix 屬性的自定義字段類(如果有)等),使用 FormHelper 加載所需的字段類。如果字段有一些過濾輸出數(shù)據(jù)的規(guī)則 - 使用 FormRule 類 - 記住 filelist 類型的 Joomla 字段,您可以在其中指定過濾參數(shù)并選擇,例如僅 php 或僅 css 文件。

Joomla 表單字段類文件 位于libraries/src/Form/Field。溫和地說,有很多。這是管理面板的構(gòu)建材料,有時(shí)也是前端的構(gòu)建材料。

Creating a custom Form field type in Joomla sing the Modal Select example

類文件描述了類屬性,例如 $type、$layout 以及其他操作所需的屬性。大多數(shù)字段都有方法 getInput() - 實(shí)際上返回字段的 HTML 輸出,getLayoutData() - 在將字段發(fā)送到渲染之前預(yù)處理字段數(shù)據(jù),getLabel() - 使用字段標(biāo)簽等。

我們記得字段類繼承父 FormField 類。在類文件 libraries/src/Form/FormField.php 中,描述了字段的可能屬性,這些屬性可以在 XML 描述中使用。他們簡要描述了它是什么以及為什么。

Creating a custom Form field type in Joomla sing the Modal Select example
子類(繼承者)能夠使用父類的方法,并在必要時(shí)覆蓋它。

Creating a custom Form field type in Joomla sing the Modal Select example

Joomla 5 中字段的視圖(HTML 輸出、布局)

每個(gè)字段類都有一個(gè) HTML 輸出。在經(jīng)典的 MVC 中,視圖會立即處理數(shù)據(jù)輸出,但在 Joomla 中還有一個(gè)附加層 - 布局,它允許您覆蓋布局 - 該 CMS 最重要的功能之一。 核心布局是預(yù)計(jì)位于站點(diǎn)根目錄的 layouts 文件夾 中。它們傳遞一個(gè) $displayData 數(shù)組,其中包含從 getLayoutData() 方法接收到的所有數(shù)據(jù)。我們在 $layout 類屬性中指定要使用的輸出布局。

<?php
/**
 * Name of the layout being used to render the field
 *
 * @var    string
 * @since  3.7
 */
protected $layout = 'joomla.form.field.email';

這種類型的錄音很常見。在 Joomla 中,layout 是站點(diǎn)根目錄下的布局文件夾中布局文件的以點(diǎn)分隔的路徑。 也就是說,條目 $layout = 'joomla.form.field.email' 意味著渲染字段時(shí)將使用布局 layouts/joomla/form/field/email.php.

<?php 
use Joomla\CMS\Layout\LayoutHelper;

$displayData = [
                'src' => $this->item->image,
                'alt' => $this->item->name,
               ];

echo LayoutHelper::render(
                        'joomla.html.image',
                         $displayData
                    );

同樣,此示例將使用布局layouts/joomla/html/image.php??梢栽诰W(wǎng)站模板和管理面板的 html 文件夾中覆蓋某些布局。

因此,如果我們想確切地看到最終有哪些數(shù)據(jù)進(jìn)入布局以及如何顯示,請轉(zhuǎn)到布局文件中查看。

在 Joomla 5 的模態(tài)選擇窗口中創(chuàng)建數(shù)據(jù)選擇字段

現(xiàn)在讓我們回到本文的主要任務(wù)。

示例對于我們學(xué)習(xí)很重要(撰寫本文時(shí)為 Joomla 5.0.1):

  • 該字段的主類是libraries/src/Form/Field/ModalSelectField.php
  • Joomla 文章模態(tài)選擇字段 - administrator/components/com_content/src/Field/Modal/ArticleField.php
  • 菜單類型模態(tài)選擇字段 - administrator/components/com_menus/src/Field/MenutypeField.php
  • 菜單項(xiàng)模態(tài)選擇字段 - administrator/components/com_menus/src/Field/MenutypeField.php
  • 輸出布局 - layouts/joomla/form/field/modal-select.php

在撰寫本文時(shí),com_contacts 中的單一聯(lián)系人模式選擇字段尚未轉(zhuǎn)換為通用字段類型一,僅位于(在撰寫本文時(shí)的 Joomla 5.0.2 中)administrator /components/com_contact/src/Field/Modal/ContactField.php。它直接繼承FormField,而不是ModalSelectField。

添加自己的字段的操作算法如下:

  • 使用 xml 文件中的字段或以編程方式使用 SimpleXMLElement 創(chuàng)建 XML 表單。
  • 如果我們即時(shí)工作,則使用 onContentPrepareForm 事件的插件,將 XML 表單添加到所需的表單(在此之前檢查 $form->getName())
  • 創(chuàng)建字段類。
  • 如有必要,我們可以創(chuàng)建自己的字段 HTML 輸出(布局)。我們將把它排除在本文的討論范圍之外。 它有效。 ## 字段 XML 這段代碼中最重要的是 addfieldprefix 屬性,它的意思是字段類的命名空間。類名由 addfieldprefix "" type "Field" 組成。在這種情況下,字段類將為 JoomlaPluginWtproductbuilderProviderjoomshoppingFieldProductlistField。
<?php
/**
 * Name of the layout being used to render the field
 *
 * @var    string
 * @since  3.7
 */
protected $layout = 'joomla.form.field.email';

字段的 HTML 輸出(布局)

為了清楚 PHP 中發(fā)生的一切,您需要首先查看字段輸出的布局。它位于文件 layouts/joomla/form/field/modal-select.php 中。事實(shí)上,有 2 個(gè)輸入字段是輸出 - 一個(gè)可見,另一個(gè)不可見。所選文章、聯(lián)系人或產(chǎn)品的標(biāo)題以占位符的形式輸入到可見字段中 - $valueTitle 參數(shù)。第二個(gè)是他的 id - $value。如果我們還沒有選擇任何內(nèi)容,則該字段中應(yīng)該有一個(gè)短語,例如“選擇文章”或“選擇產(chǎn)品”。這是一個(gè)語言常量,我們將其放入 XML 字段的提示屬性中或字段類的 setup() 方法中。

可用于輸出布局的所有參數(shù)(這意味著可以通過編程方式或在 XML 文件中使用的參數(shù)):

<?php
/**
 * Name of the layout being used to render the field
 *
 * @var    string
 * @since  3.7
 */
protected $layout = 'joomla.form.field.email';

PHP 字段類

正如您可能已經(jīng)猜到的那樣,字段類位于我的插件中。方法plugins/wtproductbuilder/providerjoomshopping/src/Field/ProductlistField.php。我以單模態(tài)文章選擇字段為基礎(chǔ),重新設(shè)計(jì)它以滿足我的需求——從 JoomShopping 在線商店選擇產(chǎn)品。我們用我們自己的類擴(kuò)展父 ModalSelectField 類。

我的任務(wù)只包括產(chǎn)品選擇,編輯和創(chuàng)作不是,所以在文章正文中我們只討論產(chǎn)品選擇。 PHP類很小,我會完整給出并評論。

<?php 
use Joomla\CMS\Layout\LayoutHelper;

$displayData = [
                'src' => $this->item->image,
                'alt' => $this->item->name,
               ];

echo LayoutHelper::render(
                        'joomla.html.image',
                         $displayData
                    );

另外,引入了 getValueTitle() 方法,該方法在已選擇并保存實(shí)體的情況下顯示所選實(shí)體的名稱(產(chǎn)品名稱、文章標(biāo)題等)。也就是說,我們?nèi)ゾ庉嫴藛雾?xiàng),我們不觸及該字段,但我們希望看到人們可以理解的文章標(biāo)題/產(chǎn)品名稱,而不僅僅是一個(gè)id。此方法顯示所需的標(biāo)題。

<field
      type="productlist"
      name="product_id"
      addfieldprefix="Joomla\Plugin\Wtproductbuilder\Providerjoomshopping\Field"
      label="Field label"
      hint="Field placeholder"
      />

在一些需要更復(fù)雜功能的字段中 - 多語言關(guān)聯(lián)等 - 字段類中還有其他方法覆蓋 FormField 類的基本方法:

  • setLayoutData() 是在實(shí)際渲染字段之前預(yù)處理數(shù)據(jù)的方法
  • getRenderer() - 用于渲染的附加參數(shù) 等等

在我們的例子中,沒有這樣的需求,所以我們不使用它們。

模態(tài)窗口內(nèi)容的 HTML 輸出

單擊“選擇”按鈕時(shí),將打開一個(gè)模式 Bootstrap 窗口,其中在

Creating a custom Form field type in Joomla sing the Modal Select example
在我的插件中,onAjaxProviderjoomshopping() 方法返回產(chǎn)品列表的 HTML 輸出。我們用它們循環(huán)遍歷數(shù)組,拍攝照片、名稱和輸出。代碼通常很長,所以我將發(fā)布最重要的片段。

簡化循環(huán)代碼示例:

<?php
extract($displayData);

/**
 * Layout variables
 * -----------------
 * @var   string   $autocomplete    Autocomplete attribute for the field.
 * @var   boolean  $autofocus       Is autofocus enabled?
 * @var   string   $class           Classes for the input.
 * @var   string   $description     Description of the field.
 * @var   boolean  $disabled        Is this field disabled?
 * @var   string   $group           Group the field belongs to. <fields> section in form XML.
 * @var   boolean  $hidden          Is this field hidden in the form?
 * @var   string   $hint            Placeholder for the field.
 * @var   string   $id              DOM id of the field.
 * @var   string   $label           Label of the field.
 * @var   string   $labelclass      Classes to apply to the label.
 * @var   boolean  $multiple        Does this field support multiple values?
 * @var   string   $name            Name of the input field.
 * @var   string   $onchange        Onchange attribute for the field.
 * @var   string   $onclick         Onclick attribute for the field.
 * @var   string   $pattern         Pattern (Reg Ex) of value of the form field.
 * @var   boolean  $readonly        Is this field read only?
 * @var   boolean  $repeat          Allows extensions to duplicate elements.
 * @var   boolean  $required        Is this field required?
 * @var   integer  $size            Size attribute of the input.
 * @var   boolean  $spellcheck      Spellcheck state for the form field.
 * @var   string   $validate        Validation rules to apply.
 * @var   string   $value           Value attribute of the field.
 * @var   string   $dataAttribute   Miscellaneous data attributes preprocessed for HTML output
 * @var   array    $dataAttributes  Miscellaneous data attribute for eg, data-*
 * @var   string   $valueTitle
 * @var   array    $canDo
 * @var   string[] $urls
 * @var   string[] $modalTitles
 * @var   string[] $buttonIcons
 */

第二個(gè)。鏈接標(biāo)簽代碼必須包含我們需要的數(shù)據(jù)的數(shù)據(jù)屬性。我們在貨物輸出循環(huán)的示例代碼中看到了這個(gè)片段。

<?php
/**
 * Name of the layout being used to render the field
 *
 * @var    string
 * @since  3.7
 */
protected $layout = 'joomla.form.field.email';

JavaScript 處理。將數(shù)據(jù)從 發(fā)送到父窗口中的字段

現(xiàn)在讓我們開始使用 JavaScript。在撰寫本文的過程中,出現(xiàn)了一些細(xì)微差別,使我們能夠討論新舊工作方式。

我們記得在工作的過程中,我們連接了以下js腳本

  • media/system/js/fields/modal-fields.min.js - 此文件已連接到文章選擇字段的類中。然而,我們現(xiàn)在可以說這是一種古老且過時(shí)的工作方法。不再需要該文件。我們在 PHP 類中注釋掉了它。
  • media/plg_wtproductbuilder_providerjoomshopping/js/providerjoomshopping.modal.js - 我們自己的 js 文件。

讓我們從我們自己的 javascript 開始。在這里,使用 select-link 類,我們獲取所有選擇器并將單擊事件的偵聽器掛在它們上。

<?php 
use Joomla\CMS\Layout\LayoutHelper;

$displayData = [
                'src' => $this->item->image,
                'alt' => $this->item->name,
               ];

echo LayoutHelper::render(
                        'joomla.html.image',
                         $displayData
                    );

如果 id 和 title 一切都很直觀,那么數(shù)據(jù)對象和 postMessage 對于那些習(xí)慣使用 Joomla 的人來說可能并不明顯。

就像在 Joomla 3 和 Joomla 4 中一樣

之前,在 Joomla 2.5、3.x 甚至 4.x 中,使用了以下方法:在字段輸出的布局中,我們使用內(nèi)聯(lián)腳本將處理函數(shù)掛在窗口上,并從 < ;iframe>我們將其稱為 window.parent[functionName]??纯催@段代碼

<field
      type="productlist"
      name="product_id"
      addfieldprefix="Joomla\Plugin\Wtproductbuilder\Providerjoomshopping\Field"
      label="Field label"
      hint="Field placeholder"
      />

在此形式中,函數(shù)名稱在文章/聯(lián)系人/菜單項(xiàng)列表中每個(gè)鏈接的 data-function 屬性中指定。函數(shù)本身被內(nèi)聯(lián)放置,有時(shí)將其名稱與附加 id 統(tǒng)一起來。例如,"jSelectArticle_".$this->id.

jSelectArticle() 函數(shù)或類似函數(shù)(我們將使用 jSelectProduct())是文件 modal-fields.min.js 中標(biāo)準(zhǔn) processModalSelect() 函數(shù)的包裝器。它依次調(diào)用 processModalParent() 函數(shù)并在執(zhí)行后關(guān)閉模態(tài)窗口。

Creating a custom Form field type in Joomla sing the Modal Select example
這個(gè)函數(shù)需要指定一堆參數(shù)才能工作:實(shí)體的類型(文章、聯(lián)系人等)、字段的前綴(實(shí)際上是 HTML 字段選擇器的 id)、實(shí)際的 id和 title - 我們需要的參數(shù)等

Creating a custom Form field type in Joomla sing the Modal Select example
在一項(xiàng)功能中,所有場合的一切都被收集起來。這就是我們字段中數(shù)據(jù)的放置位置。

Joomla 5 中的情況如何

但是,現(xiàn)在,在 Joomla 5 中,不再需要此文件。如果我們使用字段輸出的標(biāo)準(zhǔn)布局,那么 modal-content-select-field 資源就會連接到它,以一種新的方式工作。

Creating a custom Form field type in Joomla sing the Modal Select example
現(xiàn)在,Joomla 5 前端正在切換為使用 JavaScript postMessages。由于并非所有舊擴(kuò)展都已準(zhǔn)備好切換到新 Rails,因此已實(shí)現(xiàn) JoomlaExpectingPostMessage 標(biāo)志,它允許您區(qū)分過時(shí)的事件調(diào)用方法。它與所描述的工作方法有間接關(guān)系,但可能對某人有用。在完全過渡到 postMessages 后,此標(biāo)志將被刪除。

Creating a custom Form field type in Joomla sing the Modal Select example

所以,現(xiàn)在我們不需要帶有被調(diào)用函數(shù)名稱的額外鏈接屬性。相反,我們使用 postMessage 機(jī)制。為此,在數(shù)據(jù)對象中,我們需要指定等于 joomla:content-select 的 messageType 參數(shù)。為什么?從 JavaScript 的角度來看,在 Joomla 中工作如下:

  • 點(diǎn)擊鏈接并獲取鏈接屬性
  • 向父窗口發(fā)送消息 window.parent.postMessage(data)
  • media/system/js/fields/modal-content-select-field.js 文件連接到具有消息事件監(jiān)聽器的父窗口。
  • 它檢查消息類型,如果是 joomla:content-select,則將值放置在必填字段中并關(guān)閉模式窗口

Creating a custom Form field type in Joomla sing the Modal Select example

在研究Joomla核心代碼和尋找解決方案的過程中,很自然地遇到了jSelectArticle()之類的函數(shù)。然后我遇到了 postMessage 并決定通過給它一個(gè)長的唯一名稱來創(chuàng)建我的 MessageType。為了使其工作,我編寫了自己的處理過程,調(diào)用(事實(shí)證明,已經(jīng)過時(shí)的)processModalSelect() 函數(shù)。我面臨的事實(shí)是,盡管數(shù)據(jù)已正確插入到字段中,但模式窗口不想以任何方式關(guān)閉。進(jìn)一步的搜索首先找到了正確的事件類型,然后刪除了不必要的腳本并簡化了整個(gè)代碼。

概括

Joomla 為開發(fā)人員提供了一套豐富的工具,用于處理第三方來源的數(shù)據(jù)并從第三方來源獲取數(shù)據(jù)并在代碼中使用它。對于開發(fā)人員創(chuàng)建自己的擴(kuò)展時(shí),使用 JForm 字段非常重要,特別是當(dāng)需要解決超出典型范圍的任務(wù)時(shí)。當(dāng)然,這樣的模式窗口和其中的數(shù)據(jù)選擇是一種相當(dāng)特殊的情況,但通過這種方式,您既可以覆蓋任何其他 JForm 字段,也可以使用自己的 UX 邏輯創(chuàng)建自己的類型。

Joomla 社區(qū)資源

  • https://joomla.org/
  • Joomla 社區(qū)雜志中的這篇文章

以上是在 Joomla 中使用模態(tài)選擇示例創(chuàng)建自定義表單字段類型的詳細(xì)內(nèi)容。更多信息請關(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)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

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

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

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集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

對基于PHP的API進(jìn)行版本控制的最佳實(shí)踐是什么? 對基于PHP的API進(jìn)行版本控制的最佳實(shí)踐是什么? Jun 14, 2025 am 12:27 AM

基于toversionaphp,useUrl deuseUrl specteringforclarityAndEsofRouting,單獨(dú)的codetoavoidConflicts,dremecateOldVersionswithClearCommunication,andConsiderCustomHeadeSerlySerallyWhennEnncelsy.startbyplacingtheversionIntheUrl(E.G.,epi/api/v

如何在PHP中實(shí)施身份驗(yàn)證和授權(quán)? 如何在PHP中實(shí)施身份驗(yàn)證和授權(quán)? Jun 20, 2025 am 01:03 AM

tosecurelyhandleauthenticationandationallizationInphp,lofterTheSesteps:1.AlwaysHashPasswordSwithPassword_hash()andverifyusingspasspassword_verify(),usepreparedStatatementStopreventsqlineptions,andStoreSeruserDatain usseruserDatain $ _sessiveferterlogin.2.implementrole-2.imaccessccsccccccccccccccccccccccccc.

PHP中的程序和面向?qū)ο蟮木幊谭独g有什么區(qū)別? PHP中的程序和面向?qū)ο蟮木幊谭独g有什么區(qū)別? Jun 14, 2025 am 12:25 AM

procemal and object-tiriendedprogromming(oop)inphpdiffersimplessintustructure,可重復(fù)使用性和datahandling.1.procedural-Progrogursmingusesfunctimesfunctionsormanized sequalized sequalized sequiential,poiperforsmallscripts.2.OpporganizesCodeOrganizescodeOdeIntsocloceSandObjects,ModelingReal-Worlden-Worlden

PHP中有哪些弱參考(弱圖),何時(shí)有用? PHP中有哪些弱參考(弱圖),何時(shí)有用? Jun 14, 2025 am 12:25 AM

PHPdoesnothaveabuilt-inWeakMapbutoffersWeakReferenceforsimilarfunctionality.1.WeakReferenceallowsholdingreferenceswithoutpreventinggarbagecollection.2.Itisusefulforcaching,eventlisteners,andmetadatawithoutaffectingobjectlifecycles.3.YoucansimulateaWe

如何在PHP中安全地處理文件上傳? 如何在PHP中安全地處理文件上傳? Jun 19, 2025 am 01:05 AM

要安全處理PHP中的文件上傳,核心在于驗(yàn)證文件類型、重命名文件并限制權(quán)限。1.使用finfo_file()檢查真實(shí)MIME類型,僅允許特定類型如image/jpeg;2.用uniqid()生成隨機(jī)文件名,存儲至非Web根目錄;3.通過php.ini和HTML表單限制文件大小,設(shè)置目錄權(quán)限為0755;4.使用ClamAV掃描惡意軟件,增強(qiáng)安全性。這些步驟有效防止安全漏洞,確保文件上傳過程安全可靠。

如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進(jìn)行交互? 如何與PHP的NOSQL數(shù)據(jù)庫(例如MongoDB,Redis)進(jìn)行交互? Jun 19, 2025 am 01:07 AM

是的,PHP可以通過特定擴(kuò)展或庫與MongoDB和Redis等NoSQL數(shù)據(jù)庫交互。首先,使用MongoDBPHP驅(qū)動(通過PECL或Composer安裝)創(chuàng)建客戶端實(shí)例并操作數(shù)據(jù)庫及集合,支持插入、查詢、聚合等操作;其次,使用Predis庫或phpredis擴(kuò)展連接Redis,執(zhí)行鍵值設(shè)置與獲取,推薦phpredis用于高性能場景,Predis則便于快速部署;兩者均適用于生產(chǎn)環(huán)境且文檔完善。

PHP中==(松散比較)和===(嚴(yán)格的比較)之間有什么區(qū)別? PHP中==(松散比較)和===(嚴(yán)格的比較)之間有什么區(qū)別? Jun 19, 2025 am 01:07 AM

在PHP中,==與===的主要區(qū)別在于類型檢查的嚴(yán)格程度。==在比較前會進(jìn)行類型轉(zhuǎn)換,例如5=="5"返回true,而===要求值和類型都相同才會返回true,例如5==="5"返回false。使用場景上,===更安全應(yīng)優(yōu)先使用,==僅在需要類型轉(zhuǎn)換時(shí)使用。

如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作? 如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作? Jun 19, 2025 pm 05:13 PM

PHP中使用基本數(shù)學(xué)運(yùn)算的方法如下:1.加法用 號,支持整數(shù)和浮點(diǎn)數(shù),也可用于變量,字符串?dāng)?shù)字會自動轉(zhuǎn)換但不推薦依賴;2.減法用-號,變量同理,類型轉(zhuǎn)換同樣適用;3.乘法用*號,適用于數(shù)字及類似字符串;4.除法用/號,需避免除以零,并注意結(jié)果可能是浮點(diǎn)數(shù);5.取模用%號,可用于判斷奇偶數(shù),處理負(fù)數(shù)時(shí)余數(shù)符號與被除數(shù)一致。正確使用這些運(yùn)算符的關(guān)鍵在于確保數(shù)據(jù)類型清晰并處理好邊界情況。

See all articles