คำถามติดแท็ก 8

แท็กเวอร์ชันควรใช้สำหรับคำถามที่ใช้กับเวอร์ชันเท่านั้นไม่ใช่เพื่อบอกว่ามีการใช้เว็บไซต์รุ่นใด

3
หากคุณอัปเดตไฟล์เส้นทางใน Drupal 8 คุณจะล้างแคชได้อย่างไร?
เมื่อได้ทำงานกับ Drupal 7 ตั้งแต่เริ่มเปิดตัวฉันกำลังเรียนรู้ Drupal 8 ในขณะที่ฉันพบว่าเมื่อใดก็ตามที่ฉันเปลี่ยนแปลงสิ่งที่ฉันต้องทำdrush cache-rebuildเพื่อให้สิ่งต่าง ๆ ทำงานได้อีกครั้ง ใน VPS ของฉันใช้เวลา 15 วินาที (และโหลดหน้าถัดไปก็ช้าด้วย) ฉันมีความรู้สึกว่านี่อาจเป็นค้อนเลื่อนเพื่อแตกสถานการณ์น็อต มีวิธีที่มีประสิทธิภาพมากกว่าในการทำให้ Drupal ทำการคอมไพล์เส้นทาง (เปลี่ยน) จาก{module}.routing.ymlไฟล์หรือไม่?
10 caching  8  routes 

3
รูปแบบหลายขั้นตอน / ตัวช่วยสร้าง
ฉันกำลังพยายามสร้างแบบฟอร์มหลายขั้นตอน / ตัวช่วยสร้างสำหรับ Drupal 8 ผู้ใช้กรอกข้อมูลในฟิลด์ชื่อนามสกุล คลิกที่ปุ่มถัดไป กรอกข้อมูลเพิ่มเติม คลิกที่ปุ่มส่ง มีทรัพยากรจำนวนมากในขณะนี้อุทิศให้กับหลายขั้นตอนหรือตัวช่วยสร้างแบบฟอร์มสำหรับ Drupal 7 นี้เป็นหนึ่งและนี้ ในอีกทางหนึ่งฉันมีปัญหาในการหาซึ่งเป็นวิธี "Drupal" ของการสร้างแบบฟอร์มหลายขั้นตอน / ตัวช่วยสร้าง Drupal 8 ฉันทำวิจัยและคิดว่ามีหลายวิธี: จัดเก็บค่าด้วยระบบการกำหนดค่าใหม่ ใช้อินเทอร์เฟซฟอร์มของตัวช่วยสร้าง ( ยังไม่ได้อยู่ในแกนหลัก ) เก็บค่ากับวัตถุเซสชัน drupal (ไม่แน่ใจว่ามีอยู่หรือไม่) แนวทางที่ถูกต้องสำหรับ Drupal 8 หรือไม่?
10 forms  8 

3
hook_init () ยังใช้อยู่หรือไม่ หากไม่ได้ใช้อีกต่อไปฉันจะแปลงรหัสที่ใช้งาน hook_init () ได้อย่างไร
เมื่อดูที่ Drupal.org API ฉันสังเกตว่าhook_init ()ไม่ได้รับการบันทึกไว้สำหรับ Drupal 8. เมื่อดูที่บันทึกการเปลี่ยนแปลงฉันพบว่าBootstrap hooks ไม่มีอยู่อีกต่อไปซึ่งชี้ไปที่กำจัด 'bootstrap' hooksทั้งหมดที่ซึ่ง bootstrap hooks ได้รับการกล่าวถึงhook_boot()และhook_exit(); hook_init()ไม่มีอะไรจะพูดเกี่ยวกับ ฉันค้นหา hook_init ในซอร์ส Drupal 8 และฉันพบรหัสต่อไปนี้ คนแรกคือการอ้างอิงถึงhook_init()ในความคิดเห็น; อีกสองคนดูเหมือนจะhook_init()นำไปใช้ แต่พวกเขาทั้งสองได้รับพารามิเตอร์ที่ฉันไม่ได้คาดหวัง function overlay_enable() { if (strpos(current_path(), 'admin/modules') === 0) { // Flag for a redirect to <front>#overlay=admin/modules on hook_init(). $_SESSION['overlay_enable_redirect'] = 1; } } /** * …
10 8  hooks 

4
ฉันจะโอนย้ายเอนทิตีไฟล์ไปยังเอนทิตีสื่อได้อย่างไร
ฉันกำลังใช้โมดูลโยกย้ายสำหรับการโยกย้าย D7 ถึง D8 และฉันกำลังเขียนการโยกย้ายทั้งหมดด้วยตนเองในรหัส (แทนที่จะใช้โมดูลการโยกย้าย D7 ในตัวเนื่องจากฉันต้องการการควบคุมการย้ายที่ละเอียดยิ่งขึ้น) ฉันมีโครงสร้างต่อไปนี้: ไซต์ D7 มีฟิลด์รูปภาพที่เก็บรูปภาพเป็นเอนทิตีไฟล์ บนไซต์ D8 เขตข้อมูลรูปภาพเป็นการอ้างอิงเอนทิตีไปยังเอนทิตีสื่อ (และเอนทิตีสื่อจะมีเขตข้อมูลรูปภาพ) เดิมทีฉันมีสิ่งต่อไปนี้สำหรับการโยกย้ายรูปภาพของฉัน: id: image_files source: plugin: legacy_images constants: source_base_path: http://example.com/ destination: plugin: 'entity:file' process: fid: fid filename: filename source_full_path: - plugin: concat delimiter: / source: - constants/source_base_path - uri - plugin: urlencode uri: plugin: file_copy …
10 8  migration 

2
ฉันจะตั้งค่าอายุการใช้งานคุกกี้ได้อย่างไร
ฉันมีปัญหาในการตั้งค่าอายุการใช้งานคุกกี้ในอินสแตนซ์ D8 ของฉัน ฉันต้องการตั้งค่าเป็นศูนย์เพื่อให้การปิดเบราว์เซอร์ล็อกออฟผู้ใช้ ฉันเพิ่มลงini_set('session.cookie_lifetime', 0);ในไซต์ / default / settings.php แล้ว ไม่มีการอ้างอิง cookie_lifetime ก่อนหน้านี้ในไฟล์ ฉันเพิ่มบรรทัด ฉันได้ล้างแคช Drupal แล้วและล้างแคช Chrome ด้วย น่าเศร้าที่มันไม่ได้รับความเคารพ เซสชันยังคงมีอยู่หลังจากปิดเบราว์เซอร์ ฉันค้นหา codebase ทั้งหมดแล้วini_set('session.cookie_lifetime', 200000);แต่ดูเหมือนไม่มีอยู่ในเว็บไซต์ของฉัน ฉันไม่เห็นว่า Drupal กำลังตั้งค่าอายุการใช้งานคุกกี้ไว้ที่ไหน ฉันได้ลองเพิ่มการตั้งค่าผ่านทางไฟล์ php.ini ในรูท แต่นั่นก็ถูกครอบงำโดย Drupal ฉันรู้สึกว่านี่เป็นสิ่งที่เรียบง่ายดังนั้นฉันจึงต้องการหลีกเลี่ยงปลั๊กอิน รอคอยที่จะได้ยินจากทุกคน ขอบคุณล่วงหน้า.
10 8  cookies 

1
วิธีรับอาร์เรย์ของรหัสเอนทิตีที่อ้างอิงจากฟิลด์การอ้างอิงเอนทิตี
ฉันมีentity_referenceสนามที่มีความBaseFieldDefinition::CARDINALITY_UNLIMITEDสำคัญเชิงหัวใจ ฉันต้องการรายการรหัสเอนทิตีที่อ้างอิง ฉันรู้ว่าฉันสามารถรับเอนทิตีที่อ้างอิงได้ทั้งหมดโดยการโทร$x->referencedEntities()แต่ฉันต้องการเฉพาะรหัสที่จะโหลดเอนทิตีในภายหลัง ขณะนี้ฉันกำลังทำสิ่งนี้: $a = []; foreach ($entity->autoren as $v) { $a[] = $v->target_id; } $this->setCurrentAnwaltReferenzen($a); ไม่มีใครรู้วิธีแก้ปัญหาที่ดีกว่าเหมือนใน D7 (-> raw ())? ขอบคุณ
10 8  entities 

6
จะแสดงมากกว่า 10 รายการในการเติมข้อความอัตโนมัติวิดเจ็ตลิงค์ได้อย่างไร?
นี่เป็นคำถามเกี่ยวกับโมดูลลิงค์ เนื่องจากด้วยโมดูลลิงก์คุณสามารถป้อนลิงก์ภายนอกหรือภายในทั้งสองเราจึงเชื่อมั่นอย่างยิ่ง น่าเสียดายที่จำนวนรายการที่จะแสดงจากฟิลด์การเติมข้อความอัตโนมัติของมันถูก จำกัด ไว้ที่ 10 เรามีโหนดจำนวนมากที่มีชื่อเหมือนกันเกือบทั้งหมดดังนั้นจึงเป็นเช่นนั้นว่าโหนดที่เรากำลังค้นหาไม่แสดงในฟิลด์เติมข้อความอัตโนมัติเมื่อมี ชื่อที่ตรงกันมากกว่า 10 รายการ ขีด จำกัด คือ hardcoded core/lib/Drupal/Core/Entity/EntityAutocompleteMatcher.phpใน มีวิธีที่สง่างามในการเพิ่มจำนวนเล็กน้อยจากภายในโมดูลที่กำหนดเองหรือไม่? ฉันต้องยืดเวลาclass EntityAutocompleteMatcherหรือไม่? ฉันจะต้องวางส่วนขยายของฉันไว้ที่ใดและจะมั่นใจได้อย่างไรว่าส่วนขยายนั้นถูกเรียกใช้จากภายในวิดเจ็ตลิงก์
10 8  navigation  ajax 

1
เพิ่มแท็บ / โลคัลภารกิจไปยังโหนด
hotel_reviewsฉันได้สร้างโมดูลที่เรียกว่า ฉันได้สร้างเส้นทางโหนด / {โหนด} / ความคิดเห็นโดยใช้hotel_reviews.routing.yml hotel_reviews.content: path: '/node/{node}/reviews' defaults: _controller: '\Drupal\hotel_reviews\Controller\ReviewsController::content' _title: 'Reviews' requirements: _permission: 'access content' จากนั้นผมก็พยายามที่จะเพิ่มงานท้องถิ่นโดยใช้hotel_reviews.links.task.yml hotel_reviews.content: route_name: hotel_reviews.content title: 'Reviews' base_route: node.view weight: 100 ตอนนี้ฉันสามารถเข้าถึงเนื้อหาที่กำหนดโดยคอนโทรลเลอร์ของฉันได้ที่node/1/reviewsแต่เมื่อฉันไปที่node/1ฉันไม่เห็นแท็บคำวิจารณ์ ผมทำอะไรผิดหรือเปล่า? ฉันใช้เอกสารต่อไปนี้มาแล้ว: บทแนะนำการอัพเกรด D7 เป็น D8: แปลง hook_menu () และ hook_menu_alter () เป็น Drupal 8 APIs จัดเตรียมภารกิจโลคัลที่กำหนดโมดูล โครงสร้างเส้นทาง
10 8  routes 

5
วิธีการเปลี่ยนเส้นทางไปยังหน้าเว็บที่กำหนดเองหลังจากที่โหนดบันทึกหรือลบ?
สิ่งที่ฉันพยายามทำไม่ได้ผลฉันยังคงเปลี่ยนเส้นทางไปที่ / node / {id}: function hook_form_alter(&$form, $form_state, $form_id) { $form['actions']['submit']['#submit'][] = 'callback_set_redirect'; } function callback_set_redirect($form, FormStateInterface $form_state) { $form_state->setRedirect('custom.landing.page'); }
10 8  redirection 

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 

4
วิธีแก้ปัญหาข้อผิดพลาด“ โมดูลต่อไปนี้หายไปจากระบบไฟล์” ข้อผิดพลาด?
ฉันได้รับข้อผิดพลาดต่อไปนี้ในไซต์ Drupal 8 โมดูลต่อไปนี้หายไปจากระบบไฟล์ ดูเหมือนว่าโมดูลที่กำหนดเองได้รับการติดตั้งและลบโดยไม่ถอนการติดตั้ง ฉันจะแก้ไขข้อผิดพลาดนี้ได้อย่างไร?
9 8 

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