Score:2

What is the route for a specific node?

ธง kz

I want to override the user.login route that points to the default login page.

I.e. I want that a user who presses the default "Log in" link for the site to be directed to a node that provides some help (where the user can click on a link and arrive at the standard log-in form).

Say that the path I want to redirect to is /node/42. How can I find out what route to return for a specific node?

I believe that the right place to do this in Drupal 9 is to override the getRouteName() function the in the LoginLogoutMenuLink class. So I'm trying to create something like this.

public function getRouteName() {
  if ($this->currentUser->isAuthenticated()) {
    return 'user.logout';
  }
  else {
    return '- What to put here? - ';
  }
}

I've searched a lot, and some people say that the route for nodes are entity.node.canonical. But that does not solve it for me. I think that the route for a specific node also need to have the nid in there somewhere.

4uk4 avatar
cn flag
ดูคำตอบจาก @sonfd และแทนที่ `getRouteParameters()` เพื่อส่งคืนอาร์เรย์พารามิเตอร์ด้วย node id
Score:6
ธง in

เส้นทางสำหรับโหนดทั้งหมดจะถูกแทนที่ entity.node.canonical.

เส้นทางต้องการ route_parameter โหนด, ที่จะผ่านนิด.

ตัวอย่างเช่น คุณสามารถสร้างลิงก์ไปยังหน้าของโหนดด้วย ลิงก์::createFromRoute() ชอบ:

$my_link = Link::createFromRoute('ข้อความลิงก์ของฉัน', 'entity.node.canonical', [
  'โหนด' => 123,
]);

ตามที่ @ 4k4 ชี้ให้เห็น คุณจะต้องสร้างคลาส LoginLogoutMenuLink getRouteName() และ getRouteParameters() วิธีการ

ฟังก์ชั่นสาธารณะ getRouteName () {
  ถ้า ($this->currentUser->isAuthenticated()) {
    กลับ 'user.logout';
  }
  อื่น {
    กลับ 'entity.node.canonical';
  }
}

ฟังก์ชั่นสาธารณะ getRouteParameters () {
  // ไม่แน่ใจว่านี่เป็นเงื่อนไขที่ดีที่สุดที่จะใช้ที่นี่หรือไม่
  ถ้า ($this->getRouteName() == 'entity.node.canonical') {
    กลับ [
      'โหนด' => 123,
    ];
  }

  ส่งคืนพาเรนต์::getRouteParameters();
}
Free Radical avatar
kz flag
ขอบคุณ! ฉันแค่ต้องแก้ไขเล็กน้อยเพื่อให้มันใช้งานได้ ดูการแสวงหาที่อัปเดตสำหรับเวอร์ชันการทำงาน

โพสต์คำตอบ

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