Score:0

วิธีรับข้อมูลโหนดใน RouteSubscriberBase::alterRoutes

ธง jp

สิ่งที่ฉันพยายามทำให้สำเร็จคือสำหรับบางโหนดที่ตั้งค่าธีมผู้ดูแลระบบ ฉันได้กำหนด RouteSubscriberBase แล้ว แต่ฉันจะได้รับข้อมูลโหนดที่นี่ได้อย่างไร รหัสนี้ใช้งานไม่ได้ $node = \Drupal::routeMatch()->getParameter('node');

$route->getPath() จะกลับมา /โหนด/{โหนด}

คลาส RouteSubscriber ขยาย RouteSubscriberBase
{

    /**
     * {@inheritdoc}
     */
    ฟังก์ชั่นสาธารณะ alterRoutes (RouteCollection $collection)
    {
        ถ้า ($route = $collection->get('entity.node.canonical')) {
            $node = \Drupal::routeMatch()->getParameter('โหนด');
            // dpm($โหนด); - นี่จะเป็นโมฆะ
            ถ้า ($ นิด == 123) {
                $route->setOption('_node_operation_route', จริง);
            }
        }
    }

}

อัปเดต: ตามที่กล่าวไว้ด้านล่างโดย @ 4uk4 RouteSubscriberBase ไม่ใช่วิธีแก้ปัญหาที่เหมาะสมสำหรับสิ่งนี้ ตามที่แนะนำ ThemeNegotiatorInterface ทำให้งานนี้ ขอบคุณ @4uk4!

Vikram8888 avatar
in flag
อย่างที่คุณบอกว่า $route->getPath() จะส่งคืน /node/{node} โดยใช้ฟังก์ชันการระเบิด คุณจะได้รับ node id เป็นรูปแบบอาร์เรย์ หรือลองด้วยวิธีดังกล่าว $entity = \Drupal::routeMatch()- >getParameter('โหนด'); if ($entity instanceof \Drupal\node\NodeInterface) { // ตรวจสอบว่าเป็นโหนดหรือไม่ $nid = $node->id(); // คุณมีโหนดวัตถุตรงนี้ด้วย }
sonfd avatar
in flag
คุณจะไม่สามารถรับรหัสโหนดที่นี่ได้ เหตุการณ์นี้จะเริ่มทำงานเมื่อมีการล้างแคชหรือเมื่อเปิดใช้งานโมดูลเท่านั้น
4uk4 avatar
cn flag
หากคุณต้องการเลือกธีมอื่นสำหรับโหนดเฉพาะ คุณต้องมีตัวเจรจาธีมแบบกำหนดเอง ดู https://drupal.stackexchange.com/questions/281447/themenegotiator-not-working-for-admin-pages

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา