Drupal

คำถาม & คำตอบสำหรับนักพัฒนาและผู้ดูแลระบบ Drupal

2
วิธีอัปเดตค่าที่อนุญาตของฟิลด์รายการโดยทางโปรแกรม
ฉันได้สร้างรายการเลือกสำหรับบัญชี Profile2 ใน Drupal 7 ในรายการค่าที่อนุญาตฉันได้เพิ่มค่าบางอย่าง ตอนนี้สิ่งที่ฉันต้องการจะทำคือการปรับปรุงค่าในรายการโดยทางโปรแกรม (เพิ่มลบหรือปรับปรุง) ฉันไม่ต้องการใช้ form_alter เพราะฉันต้องการอัพเดตเหล่านี้ที่ส่งไปยังฐานข้อมูล ปัญหาของฉันคือฉันไม่สามารถหาที่เก็บค่าเหล่านี้ในฐานข้อมูลหรือวิธีดึงค่าเหล่านั้นจาก Profile2 อัปเดตแล้วบันทึก ฉันได้ Googled สูงและต่ำในเรื่องนี้โดยเฉพาะและไม่สามารถหาคำตอบเกี่ยวกับวิธีการทำเช่นนี้ได้ ฉันหวังว่าจะมีคนช่วยฉันออก ขอบคุณ
10 7  forms  users 

2
สิ่งใดที่อาจทำให้คำสั่ง drush รีโมตล้มเหลวโดยมีข้อผิดพลาด ssh เมื่อ ssh ทำงานในกรณีอื่นทั้งหมด?
ฉันมีคีย์ ssh สาธารณะและส่วนตัวในเซิร์ฟเวอร์ทั้งสามของฉัน (dev, UAT และการผลิต) เพื่อให้ฉันสามารถเข้าสู่ระบบจากระยะไกลหรือจากที่หนึ่งไปยังอีก ทุกอย่างทำงานได้อย่างสมบูรณ์แบบสำหรับคำสั่ง sshและscp อย่างไรก็ตามมันไม่ทำงานสำหรับ Drush ถ้าฉันดำเนินการdrush @dev statusจาก UAT ตัวอย่างเช่นฉันจะได้รับแบนเนอร์ของเซิร์ฟเวอร์โดยบอกว่าระบบคือ "ใช้โดยผู้ใช้ที่ได้รับอนุญาตเท่านั้นblah blah blah " และจากนั้นฉันก็จะได้รับ ปฏิเสธการอนุญาต (publickey, รหัสผ่าน, แป้นพิมพ์แบบโต้ตอบ) ~/.drush/aliases.drushrc.phpไฟล์ของฉันประกอบด้วย: # Development # $aliases['dev'] = array( 'uri' => 'http://default', 'root' => '/var/www/vhosts/dev.www.company.com/current/', 'remote-host' => 'companya0.company.com', 'remote-user' => 'myusername' ); # UAT # $aliases['uat'] = …
10 drush 

6
ไฟล์ที่แนบกับโหนดนั้นจะไม่ถูกลบออกจากเซิร์ฟเวอร์แม้ว่าจะถูกลบออกจากโหนดแล้วก็ตามและ Drupal 7 ก็ทำการแก้ไข
ฉันได้สังเกตเห็นบางสิ่งบางอย่างที่ผิดปกติในเว็บไซต์ของฉัน: หลังจากการแนบไฟล์ไปยังโหนด (ผ่านข้อมูลแฟ้มปกติ) ว่าไฟล์ที่ไม่เคยได้รับการลบจากเซิร์ฟเวอร์ ฉันลบมันออกจากโหนดบันทึกการเปลี่ยนแปลงนั้น แต่ฉันเห็นว่าไฟล์ยังคงอยู่บนเซิร์ฟเวอร์ สิ่งนี้ทำให้การแทนที่ไฟล์ยากมากเพราะเมื่อผู้ใช้พยายามแนบไฟล์ทดแทนชื่อไฟล์จะมีคำต่อท้าย "_0" หรือ "_1" (เนื่องจากไฟล์ต้นฉบับยังคงอยู่บนเซิร์ฟเวอร์และทำให้ชื่อซ้ำกัน) . นั่นหมายความว่าเราจะต้องค้นหาลิงก์ทั้งหมดไปยังไฟล์และแก้ไขแต่ละไฟล์ให้ตรงกับชื่อ / url ไฟล์ใหม่ มันยุ่งเหยิงไปหมด ฉันกำลังดูออนไลน์และดูเหมือนว่าไม่มีใครมีปัญหานี้ - ไฟล์ควรถูกลบออกจากเซิร์ฟเวอร์เมื่อพวกเขาถูกลบออกจากโหนด ความคิดใด ๆ ที่ทำให้เกิดกรณีนี้ขึ้นในกรณีของฉัน? ฉันไม่แน่ใจว่าจะเริ่มมองหาที่ไหน หน้าการกำหนดค่า 'ระบบไฟล์' แน่นอนไม่มีลักษณะเช่นนั้นเป็นตัวเลือกที่อาจถูกตรวจสอบ และตัวเลือกภาคสนามดูเหมือนว่าจะไม่มีสิ่งใดในลักษณะนั้นที่ฉันอาจตั้งไว้โดยไม่ได้ตั้งใจ ความคิดอื่น ๆ ?
10 7  files 

1
เพิ่มข้อความหลังฟิลด์อินพุตด้วย form api (ฟิลด์ต่อท้าย)
ฉันกำลังสร้างฟอร์มด้วยฟิลด์ข้อความ หลังจากฟิลด์อินพุตฉันต้องการมีข้อความ แบบนี้: Label * |________| some text Field description รหัสที่ฉันใช้คือ: $form['a_textfield'] = array( '#type' => 'textfield', '#title' => t('A Label'), '#size' => 10, '#maxlength' => 15, '#description' => t('A Field description'), '#required' => TRUE, ); มีวิธีเพิ่ม "ข้อความบางส่วน" หลังจากฟิลด์อินพุตด้วยวิธีนี้หรือไม่? ฉันจะส่งออกโค้ด HTML ด้วยตนเองผ่าน #markup หรือไม่ มีวิธีในการทำเช่นนี้ผ่านการเปลี่ยนแปลงรูปแบบ? หรือฟังก์ชั่นชุดรูปแบบ?
10 7  forms 

4
วิธีที่ถูกต้องในการเพิ่ม JS และ CSS ไปยังโหนด / แก้ไขและรูปแบบอื่น ๆ
ฉันกำลังสร้างเว็บไซต์ที่มี JS จำนวนมากและฉันสงสัยว่าฉันควรใส่รหัส JS ไว้ที่ใด อย่างดีที่สุดฉันต้องการให้ JS กับแต่ละโมดูลไม่ใช่เลเยอร์ธีม เนื้อหาบางอย่างอาจถูกเปิดเผยเป็นบล็อกเป็นต้น แต่ฉันมีปัญหาบางอย่างกับแคช ในตัวอย่างของฉันฉันต้องเพิ่ม JS & CSS ในแบบฟอร์มการแก้ไขโหนด ฉันใช้ hook_block_view แล้ว แต่ถูกแคชไว้ ดังนั้นหากมีข้อผิดพลาดในรูปแบบการแก้ไขโหนดฟังก์ชัน drupal_add_js & drupal_add_css จะไม่ถูกเรียกใช้ ดูเหมือนจะเป็นจริงสำหรับ hook_node_prepare คุณจะใส่ชั้น JS & CSS ที่ไหน และมี hooks ที่เรียกว่าแม้ว่าจะมีข้อผิดพลาดในแบบฟอร์มการแก้ไขโหนด?
10 theming  hooks 

5
Drupal จัดการกับการโหลดคลาสอัตโนมัติอย่างไร
Drupal จัดการกับการโหลดคลาสอัตโนมัติผ่านโมดูลได้อย่างไร ตัวอย่างเช่นถ้าฉันมีโมดูลกิจกรรมและฉันประกาศคลาสที่เรียกว่าเหตุการณ์แล้วในไฟล์. info ฉันรวมไฟล์คลาสไว้การลงทะเบียนนี้เป็นอย่างไร ปัญหาคือฉันพยายามหาอาร์เรย์ที่มีชื่อคลาสที่โหลดทั้งหมด get_declared_classes ()ไม่ส่งคืนชื่อของคลาสทั้งหมดของฉันที่ประกาศในลักษณะนี้ดังนั้นฉันสมมติว่ามันถูกโหลดอัตโนมัติอย่างใด ทำตามคำแนะนำจากคำถามล้นสแต็คอื่นฉันลองรับทั้งหมดด้วยspl_autoload_functions ()แต่นั่นก็ไม่สำเร็จเช่นกัน ความคิดใด ๆ
10 7  .info 

6
Drush บน windows - Command pm-enable ต้องการระดับ bootstrap ที่สูงขึ้นเพื่อให้ทำงานได้
ฉันติดตั้ง aquia drupal และเพิ่มโฟลเดอร์ core drupal ในรายการไซต์ ฉันยังติดตั้งตัวติดตั้ง windows ของ drush มันใช้งานได้ดีสำหรับการดาวน์โหลดโมดูล แต่เมื่อฉันพยายามเปิดใช้งานพวกเขาฉันได้รับหน้าจอนี้: C:\Documents and Settings\Administrator\Desktop\drupal>drush en ctools Command pm-enable needs a higher bootstrap level to run - you will [error] need invoke drush from a more functional Drupal environment to run this command. The drush command 'en ctools' could …
10 7  drush 

4
จะอัปเดตโมดูลที่ปิดใช้งานโดยใช้ Drush ได้อย่างไร
มีวิธีอัปเดตโมดูลที่ปิดใช้งานด้วยDrushหรือไม่ ขณะนี้เมื่อฉันพยายามอัปเดตโมดูลที่ปิดใช้งานด้วย Drush ฉันได้รับข้อความนี้: โครงการไม่มีส่วนขยายที่เปิดใช้งานและไม่สามารถอัปเดตได้ การเปิดใช้งานโมดูลไม่ใช่ตัวเลือกเนื่องจากนี่เป็นไซต์สดจริง ๆ แล้วมีหลายไซต์ พวกเขาทั้งหมดวิ่งออกจากฐานรหัสเดียวกัน Drupal บางโมดูลถูกใช้โดยบางไซต์ แต่ไม่ใช่โมดูลอื่น (อาจไม่ได้อยู่ในไซต์หลัก) หาก Drush ไม่สามารถจัดการกับสิ่งนี้ได้ทางเลือกที่ง่ายสำหรับการอัพเดตโมดูลคืออะไร


4
จะทราบได้อย่างไรว่าเว็บไซต์ Drupal ของฉันประกอบด้วย SA-CORE-2018-002 - 2018 March exploit?
เพิ่งเปิดตัวช่องโหว่: https://www.drupal.org/sa-core-2018-002 --- แกน Drupal - สำคัญมาก - การเรียกใช้รหัสระยะไกล - SA-CORE-2018-002 ฉันจะบอกได้อย่างไรว่ามีคนใช้การฉวยประโยชน์นี้เพื่อแฮ็คไซต์ของฉัน พวกเขาจะทำอะไรกับการหาประโยชน์จากการกระทำนี้หากดำเนินการอย่างเหมาะสม? ฉันไม่สามารถอัปเดตไซต์ Drupal ของฉันได้ในตอนนี้อะไรเป็นทางเลือกที่ดีในการแก้ไขรูนี้

3
ฝังฟอร์มเอนทิตี้หนึ่งไปยังอีกฟอร์มหนึ่งและบันทึกทั้งสอง
ฉันมีเอนทิตีที่กำหนดเองซึ่งขึ้นอยู่กับเอนทิตีผู้ใช้ ในความเป็นจริงมันเป็นเช่นนั้นขึ้นอยู่กับว่าฉันรู้สึกว่าเหมาะสมที่จะแสดงฟอร์มเอนทิตีของฉันภายในฟอร์มโปรไฟล์ผู้ใช้: ปัญหาที่ฉันมีตอนนี้คือ; มี 2 ​​ปุ่มบันทึก และถ้ามันไม่ดีพอปุ่มบันทึกสำหรับผู้ใช้ (ปุ่มล่าง) จะไม่สามารถใช้งานได้อีกต่อไปและปุ่มบันทึกฉลากสีขาวจะบันทึกเอนทิตีของป้ายขาวเท่านั้น ฟอร์มถูกเปลี่ยนเป็นแบบฟอร์มผู้ใช้ดังนี้: function whitelabel_form_user_form_alter(&$form, FormStateInterface $form_state) { $whitelabel = WhiteLabel::load(1); $whitelabel_form = \Drupal::service('entity.manager') ->getFormObject('whitelabel', 'default') ->setEntity($whitelabel); $form['whitelabel'] = array( '#type' => 'details', '#title' => t('White label settings'), '#open' => TRUE, 'form' => \Drupal::formBuilder()->getForm($whitelabel_form), ); } ฉันหวังว่าจะสลับพารามิเตอร์บางอย่างใน$whitelabel_formอาร์เรย์ (ซึ่งเคยทำงานใน Drupal 7) แต่อาร์เรย์นั้นมีขนาดใหญ่มากและฉันไม่พบปุ่มส่งและตัวจัดการที่ฉันต้องการ ดังนั้นคำถามคือสามารถทำได้หรือไม่ และอะไรคือวิธีที่แนะนำในการทำ?
9 8  forms  users 

5
ฉันจะค้นหาวิธีสาธารณะที่มีอยู่ได้อย่างไร
ฉันพบว่าปัญหาที่ใหญ่ที่สุดในการทำงานกับ Drupal 8 คือฉันไม่สามารถรับข้อมูลที่ต้องการได้ Drupal 8 ต้องการให้ฉันใช้วิธีสาธารณะแทนที่จะเจาะลึกวัตถุด้วยตนเอง ปัญหาคือฉันไม่สามารถหาวิธีที่สอดคล้องกันในการรับรายการวิธีการที่ใช้ได้! (พวกเขามีอยู่อย่างน่าอัศจรรย์และฉันรู้สึกว่าฉันควรจะรู้เกี่ยวกับพวกเขา) สำหรับตัวอย่างนี้สมมติว่าฉันมีประเภทเนื้อหาที่มีฟิลด์วิดีโอ ฉันต้องได้รับ URL ดิบของไฟล์วิดีโอในฟิลด์นั้น ดังนั้นฉันจะเริ่มต้นด้วย node id ($ nid) และอย่างใดฉันต้องคิดวิธีการโหลดโหนด สิ่งนี้ไม่เลวร้ายนักเพราะมีตัวอย่างมากมาย $node = \Drupal\node\Entity\Node::load($nid);ดังนั้นผมจึงทำสิ่งที่ชอบ จนถึงตอนนี้ดีมาก จากนั้นฉันต้องรับค่าฟิลด์วิดีโอของฉัน (field_main_video) สิ่งนี้ทำให้ฉันตลอดไปที่จะคิดออกเพราะมีเอกสารที่ขัดแย้งรอบ 'สุทธิ ในที่สุดฉันก็พบว่าฉันต้องทำอะไรแบบนี้ (เพราะมันเป็นรายการที่มีหลายค่า): $video = \Drupal\node\Entity\Node::load($nid)->field_main_video->getValue(); ... จากนั้นวนรอบอาร์เรย์เป็นต้นการใช้ kint ไม่ได้ช่วยฉันในการค้นหาสิ่งนี้เช่นกัน เพราะตัวอย่างเช่นถ้าฉันkint($node)และดูวิธีการฉันไม่เห็น getValue () เป็นรายการที่มี ยังคงไม่น่ากลัวเพราะมีตัวอย่างเพียงพอที่จะคิดออก ในขณะที่ฉันไปให้ลึกกว่านั้นสิ่งที่ฉันไม่รู้ (นี่คือส่วนสำคัญ) ก็คือแทนที่จะได้รับรหัสเอนทิตีของฟิลด์วิดีโอแล้วโหลดเอนทิตีแล้วค้นหาเอนทิตี "uri" ในเอนทิตี้ ฯลฯ (เช่น ฉันจะเป็น …
9 8  entities 

1
“ การใช้การตั้งค่าเขตเวลาของระบบไม่ปลอดภัย”
ฉันพบข้อผิดพลาดต่อไปนี้ในรายงานข้อความบันทึกล่าสุด : คำเตือน: DateTime :: createFromFormat (): ไม่ปลอดภัยที่จะใช้การตั้งค่าเขตเวลาของระบบ คุณจะต้องใช้การตั้งค่า date.timezone หรือฟังก์ชั่น date_default_timezone_set () ในกรณีที่คุณใช้วิธีการใด ๆ เหล่านี้และคุณยังคงได้รับคำเตือนนี้คุณมักจะสะกดตัวระบุเขตเวลา เราได้เลือกเขตเวลา 'UTC' ในตอนนี้ แต่โปรดตั้งค่า date.timezone เพื่อเลือกเขตเวลาของคุณ ใน Symfony \ Component \ HttpFoundation \ Response-> sendHeaders () (บรรทัด 331 ของ /var/www/drupal/drupal-8.1.1/vendor/symfony/http-foundation/Response.php) เว็บไซต์ของฉันไม่รวมถึงโมดูลที่กำหนดเองใด ๆ แต่เท่าที่ผมสามารถดูที่ฟังก์ชั่นวันที่เพียง time()แต่เรียกเป็น Drupal ไม่ควรจัดการกับการตั้งค่าเขตเวลาหรือไม่? มีวิธีใดบ้างที่ฉันสามารถแยกว่าฟังก์ชันนี้ถูกเรียกใช้จากที่ไหน ไม่ใช่ปัญหาสำคัญ แต่ฉันต้องการลดคำเตือนที่ไม่จำเป็นในบันทึกของฉัน
9 8 

4
ฉันจะรับชื่อผู้ใช้จาก ID ผู้ใช้ได้อย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน10 เดือนที่ผ่านมา ฉันต้องการพิมพ์ชื่อผู้ใช้ที่รู้เพียงแค่ ID ผู้ใช้ ฉันจะบรรลุสิ่งนี้ได้อย่างไร
9 users  8 

4
วนซ้ำผ่านองค์ประกอบย่อยใน Twig like Element :: children ()
เมื่อจัดการกับอาเรย์ที่สามารถเรนเดอร์ใน PHP ได้ฉันสามารถใช้ Element :: children () เพื่อเข้าถึงองค์ประกอบที่ไม่ใช่#คุณสมบัติ แต่อิลิเมนต์ที่สามารถเรนเดอร์รองได้ (ไอเท็มฟอร์มภายในชุดข้อมูล ตัวอย่างเช่นตัวอย่างนี้จาก file.module: <?php if ($element['#multiple']) { foreach (Element::children($element) as $name) { // ... } } ?> ฉันจะทำเช่นเดียวกันในแม่แบบ Twig ได้อย่างไร ถ้าฉันทำ{% for child in element %}มันจะรวมถึงยัง#type, #cacheฯลฯ
9 8  theming 

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