จัดเก็บ Drupal 7 เว็บฟอร์มในโค้ด


8

ฉันสงสัยว่ามีวิธีแก้ไขการจัดเก็บเว็บฟอร์มในรหัสหรือไม่ เพื่อให้คุณสามารถทำสำเนาได้อย่างง่ายดายบนเว็บไซต์อื่น ๆ และรวมเข้ากับโมดูลของคุณเอง ฉันกำลังมองหาบางสิ่งบางอย่างในมุมมอง API

หากไม่สามารถใช้งานได้มีกี่คนที่สนใจฟังก์ชั่นดังกล่าว? ฉันอาจพัฒนาโมดูลที่สามารถจัดการการจัดเก็บของเว็บฟอร์มในรหัส และคุณมีความกังวลใด ๆ ในการสร้างโมดูลดังกล่าวหรือไม่?

ขอบคุณ Jaap


คุณหมายถึงรูปแบบที่สร้างด้วยโมดูล Webform หรือไม่?
Mołot

1
ใช่ฉันหมายถึงแบบฟอร์มที่สร้างด้วยโมดูลเว็บฟอร์ม
Jaap Jansma

1
จริงๆแล้วมันง่ายมากแค่ดูที่Webform shareทำได้อย่างไร ( webform_share_export()และwebform_share_node_insert()เป็นฟังก์ชั่นเงิน) ไม่สามารถพูดได้ว่าฉันเห็นด้วยกับการใช้งานeval()แต่คุณสามารถแปลงได้อย่างง่ายดายเพื่อใช้วัตถุ JSON / สตริงต่อเนื่องแทน ความยากลำบากเพียงเล็กน้อย (เล็ก) ที่คุณต้องเอาชนะคือวิธี / เมื่อเว็บฟอร์มของคุณถูกนำไปใช้กับโหนดใหม่โหนดของหลักสูตรจะต้องแนบไฟล์เว็บ
ไคลฟ์

คำตอบ:


1

ไม่จริงและไม่จำเป็นต้องใช้มัน

  1. หากคุณต้องการแบบฟอร์มที่มีให้จากโค้ดฟอร์ม Form APIนั้นไม่ใช่เรื่องยากที่จะเขียนตั้งแต่เริ่มต้น ตรงกันข้ามกับ Views คุณสามารถกำหนดธีม Webforms ให้เป็น ID ของโหนดและจะเปลี่ยนจากไซต์หนึ่งไปอีกไซต์ดังนั้นฟอร์ม Webform ที่รวมกับโมดูลจะไม่สะดวก

  2. ถ้าคุณต้องการรวมฟอร์มกับโมดูลของคุณและด้วยเหตุผลใดก็ตามที่คุณไม่สามารถใช้ Form API การรวมคุณลักษณะของ UUIDและการแบ่งปัน Webform จะให้วิธีในการทำเช่นนั้น มันจะไม่เป็นรหัสในความหมายที่บริสุทธิ์ แต่ควรจะทำงาน

  3. มันค่อนข้างง่ายต่อการใช้hook_form_alterรับการแสดงฟอร์ม API ของเว็บฟอร์มเฉพาะ แน่นอนคุณจะไม่สามารถเปลี่ยนแปลงได้อย่างง่ายดายในอนาคต แต่อีกครั้งตรงกันข้ามกับมุมมองมันเป็นสิ่งที่ดี โมดูลไม่เจ็บถ้าข้อมูลบางอย่างไม่แสดงขึ้น ข้อมูลที่ไม่ได้จัดเตรียมไว้หรือจัดหาให้ในทางที่ไม่คาดว่าจะเกิดความเสียหาย ดังนั้นถ้าโมดูลความต้องการรูปแบบที่มันไม่ควรจะเป็นเรื่องง่ายที่จะแก้ไข การแก้ไขแบบฟอร์มจะต้องมีการแก้ไขโค้ดของโมดูลดังนั้นรหัส Form API จะทำให้สิ่งต่าง ๆ ง่ายขึ้นไม่ยากในระยะยาวในสถานการณ์เช่นนี้


1
แม้ว่านี่จะเป็นคำตอบที่ดีสำหรับทางเลือกอื่น แต่ฉันคิดว่าการต้องการให้เว็บฟอร์มในโค้ดนั้นเป็นคำขอที่สมเหตุสมผล (ฉันไม่เห็นด้วยว่าไม่จำเป็นต้องใช้มันหรือเป็นไปไม่ได้จริง ๆ ) ตัวอย่างเช่นถ้าคุณต้องการให้ฟอร์มการติดต่อพื้นฐานพร้อมโมดูลซึ่งสามารถขยายได้โดยผู้ใช้ผ่าน UI เว็บฟอร์มจะเหมาะ การสร้าง UI นั้นด้วยตัวเองจะเป็นความเจ็บปวดอย่างแท้จริง เนื่องจากwebformวัตถุ (หรืออาร์เรย์?) ตั้งอยู่บนวัตถุโหนดอยู่แล้วจึงสามารถทำให้เป็นอนุกรมและนำไปใช้ใหม่ได้ง่ายมาก
Clive

@Clive แต่สำหรับการติดต่อขั้นพื้นฐานทำไมทุกคนถึงต้องการรหัสจริง ทำไมจะไม่ส่งออกโหนด (ด้วยการรวมคุณสมบัติ UUID คุณสามารถส่งออกโหนดไปยังโมดูล) ได้เพียงพอหรือไม่
Mołot

โมดูลนั้นซิงโครไนซ์วัตถุ Webform ด้วยหรือไม่
ไคลฟ์

@ Clive เท่าที่ฉันจำได้มีบางประเด็นแต่ใช่ โอ้และถ้ารหัสที่กำหนดเองต้องการข้อมูลจากแบบฟอร์มจะไม่ทำให้เว็บฟอร์มนั้นเป็นอันตรายหรือไม่? ฉันรู้ว่าไม่มีวิธีที่จะทำให้ฟิลด์ต่อต้านการลบใน Webform (แต่ฉันยอมรับว่าฉันไม่ได้ดูหนักขนาดนั้น)
Mołot

1
อันที่จริงมีแม้กระทั่งแพทช์สำหรับเว็บฟอร์มเพื่อให้การทำงานร่วมกัน ฉันจะเอามันกลับมา :)
34419 Clive
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.