Score:0

ผู้ใช้ร้านค้าป้อนรหัสอีเมลเพื่อแยกตาราง

ธง de

มีข้อกำหนดในการพัฒนาโมดูลแบบกำหนดเองของ drupal 9 เพื่อรับรหัสเมลจากแบบฟอร์มการลงทะเบียนผู้ใช้และจัดเก็บแยกตาราง ฉันลองใช้ฟังก์ชัน hook_user_presave เพื่อรับรหัสเมล แต่ไม่สามารถรับได้ ขอแบ่งปันรหัส

ฟังก์ชัน save_mail_user_presave (ส่วนติดต่อผู้ใช้ $user)
 {

     พยายาม{
                $conn = ฐานข้อมูล::getConnection();
                $fields["mail"] = $user->get('mail')->value;
            $conn->insert('save_email')
                           ->ฟิลด์ ($fields)->ดำเนินการ ();
                  \Drupal::messenger()->addMessage($this->t(' ขอบคุณ !! ของคุณ >

        } catch(ยกเว้น $ex){
                \Drupal::logger('save_email')->ข้อผิดพลาด($ex->getMessage());
        }

}

ใครก็ได้ช่วยฉันหาปัญหาที

apaderno avatar
us flag
คำถามควรอธิบายว่า *ไม่สามารถรับได้* หมายความว่าอย่างไร คุณหมายความว่าด้วยรหัสที่คุณใช้ `$fields["mail"]` ไม่มีอีเมลของผู้ใช้ใช่หรือไม่ คุณได้รับข้อความแสดงข้อผิดพลาดหรือไม่? อันไหน?
apaderno avatar
us flag
ตามหมายเหตุด้านข้าง มีข้อผิดพลาดสองประการในโค้ดที่แสดง: ไม่สามารถใช้ `$this` ภายนอกเมธอดคลาสได้ เช่น ภายในฟังก์ชัน สตริงตามตัวอักษรที่ส่งไปยัง `$this->t()` ไม่มีตัวคั่นสตริงสุดท้าย ตรวจสอบว่าโค้ดที่คุณใช้เป็นโค้ด PHP ที่ถูกต้อง และแน่ใจว่าคุณคัดลอกโค้ดในคำถามอย่างถูกต้อง
de flag
ใช่ ไม่พบที่อยู่อีเมลใน .$fields["mail "] ว่างเปล่า ไม่ได้รับข้อผิดพลาดใด ๆ ขอบคุณ
apaderno avatar
us flag
ดูความคิดเห็นที่สองของฉัน หากคุณใช้รหัสนั้นจริงๆ มันจะไม่ทำงาน
Score:0
ธง cn

Drupal 9 เก็บที่อยู่อีเมลไว้แล้วเมื่อลงทะเบียนใน ในนั้น คอลัมน์ของ users_field_data ตาราง. นี่คือ "ที่อยู่อีเมลจากแบบฟอร์มการลงทะเบียนผู้ใช้"; ซึ่งแตกต่างจากที่อยู่อีเมลของบัญชีผู้ใช้ซึ่งจัดเก็บไว้ใน จดหมาย คอลัมน์ของตารางเดียวกัน

ดังนั้นจึงไม่จำเป็นต้องมีโมดูลแบบกำหนดเองสำหรับสิ่งนี้ คุณสามารถใช้ คอลัมน์ ที่ Drupal มีให้อยู่แล้ว

de flag
ขอบคุณ Patrick ฉันต้องการตรวจสอบที่อยู่อีเมลแม้ในค่าแบบฟอร์มที่ไม่ถูกต้อง คุณช่วยแนะนำวิธีแก้ไขปัญหานี้ได้ไหม
apaderno avatar
us flag
@srini ในกรณีนั้น คุณไม่สามารถใช้ `hook_ENTITY_TYPE_presave()` เนื่องจาก hook นั้นจะถูกเรียกใช้เมื่อค่าที่ส่งผ่านการตรวจสอบ ไม่ชัดเจนว่าทำไมคุณถึงเก็บที่อยู่อีเมลเมื่อแบบฟอร์มไม่ผ่านการตรวจสอบ ในกรณีนั้น คุณจะต้องจัดเก็บอีเมลหลายฉบับสำหรับผู้ใช้คนเดียว แม้กระทั่งสตริงว่าง
de flag
ต้องการจับภาพเพื่อวัตถุประสงค์ในการวิเคราะห์เดียวกัน มีวิธีใดที่จะจับภาพนั้น หากฟังก์ชั่น presave ไม่ทำงานหมายความว่าโปรดแนะนำ

โพสต์คำตอบ

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