Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Membina Permulaan Anda: Menyampaikan Jemputan Pertemuan

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Using the Mailgun Store(): A Temporary Mailbox for Your App's Incoming Email
Building Your Startup With PHP: Email Commands

Malay (Melayu) translation by Meyria (you can also view the original English article)

Final product image
What You'll Be Creating

Mukadimah

Tutorial ini adalah sebahagian daripada Membina Permulaan Anda Dengan siri PHP pada Envato Tuts+. Dalam siri ini, saya membimbing anda melalui melancarkan permulaan dari konsep ke realiti menggunakan aplikasi Perancang Mesyuarat saya sebagai contoh kehidupan sebenar. Setiap langkah di sepanjang jalan, saya akan melepaskan kod Perancang Mesyuarat sebagai contoh sumber terbuka yang boleh anda pelajari. Saya juga akan menangani isu-isu perniagaan yang berkaitan dengan permulaan apabila ia timbul.

Apakah Cover Episod ini?

Dalam tutorial ini, kami akan melayari e-mel jemputan kepada peserta, melaksanakan penampilan asas kandungannya, dan mempertimbangkan pembinaan pautan untuk penerima supaya mereka dapat bertindak balas.

Semua kod Perancang Mesyuarat ditulis dalam Rangka Kerja Yii2 untuk PHP. Jika anda ingin mengetahui lebih lanjut mengenai Yii2, periksa  siri selari pemrograman dengan Yii2 di Envato Tuts+.

Hanya peringatan, saya mengambil bahagian dalam benang komen di bawah. Saya sangat berminat jika anda mempunyai pendekatan yang berbeza, idea tambahan, atau ingin mencadangkan topik untuk tutorial masa depan. Anda juga boleh menghubungi saya di Twitter @reifman.

Keperluan untuk Memberi Jemputan

Ia menarik untuk mencapai tahap ini untuk menyampaikan jemputan pertama, tetapi masih memerlukan banyak kerja. Dalam episod terakhir, saya memperbaharui pandangan mesyuarat supaya mereka dapat menyokong sama ada penganjur atau peserta.

Kebanyakan kerja dalam episod ini akan memberi tumpuan kepada mewujudkan e-mel HTML di Yii dan menyampaikannya secara programatik. Bagaimanapun, semasa saya mula menulis kod untuk ini, saya berlari ke dalam semua kerumitan yang sistem itu tidak lama lagi akan menyokong. Sebagai contoh, semua pautan dalam jemputan diperlukan untuk mengesahkan peserta dengan selamat sambil mempertimbangkan bahawa mereka tidak pernah mendaftar untuk Perancang Mesyuarat. Sebahagian daripada ini saya akan simpan untuk episod berikutnya.

Pada dasarnya, kita harus membuat aplikasi sedar siapa yang melihat halaman mesyuarat dan kemudian menyesuaikan penampilan dan arahan yang ada. Yii membuat kebanyakan perkara ini cukup mudah, tetapi ada banyak perincian yang terlibat.

Kaveat Singkat Mengenai Pengalaman Pengguna

Biar saya katakan di depan, terdapat banyak pengalaman dan pengalaman menggilap pengguna yang perlu dilakukan secara berulang-ulang dari masa ke masa untuk menghasilkan produk berdaya maju (MVP). Kebanyakan apa yang saya bina sekarang adalah fungsi teras untuk mendapatkan alpha berjalan untuk kegunaan sebenar. Saya tahu ia kelihatan kasar di tempat-tempat dan tidak selalunya kelihatan seperti intuitif yang anda mahukan. Terdapat juga ketidakcekapan pengekodan yang perlu dioptimumkan pada masa hadapan.

Tolong kirimkan pendapat dan ulasan anda di bawah ini, dan saya akan menganggapnya untuk kerja yang berterusan.

Berikut adalah beberapa cabaran yang timbul dengan kerja episod ini:

  • Reka bentuk asas dan kandungan e-mel jemputan
  • Bagaimanakah jemputan akan dihantar? contohnya. platform e-mel atau pembekal mana?
  • Perintah yang berkaitan akan ditawarkan dalam e-mel? Dan adakah pihak penganjur dapat mengehadkan beberapa kuasa yang diberikan kepada peserta?
  • Tanggapan berfungsi untuk arahan yang dipautkan dalam e-mel jemputan
  • Menguruskan lawatan dari pengguna yang dijemput yang belum mendaftar, cth. apa yang mereka boleh akses dan tidak boleh?
  • Mengendalikan pengalaman pengguna untuk mengumpul nama-nama mesra dari peserta
  • Menjawab tindak balas kepada jemputan mesyuarat dan kemudian membina pemantauan dan keupayaan pemberitahuan untuk memberitahu penganjur
  • Merancang infrastruktur untuk e-mel masa depan yang menunjukkan kemas kini apabila perubahan konfigurasi berubah dan ketika masa hampir (dan berlalu), mis. menukar pemberitahuan, peringatan mesyuarat, menerima balasan sebagai nota baru, dll.

Semasa saya menulis kod untuk episod ini, saya membina beberapa infrastruktur untuk beberapa item di atas dan membiarkan sebahagian daripada mereka membincangkan dalam episod masa depan. Untuk memulakan, mari kita menyelami reka bentuk jemputan.

Reka Bentuk dan Kandungan Jemputan

Pada mulanya, saya terpaksa bertanya, apa yang perlu disertakan dalam e-mel? Jelas sekali, akan ada bidang standard:

  • Untuk
  • Dari
  • Subjek (anda dijemput ke mesyuarat!)
  • Badan mesej
  • Footer

Isi kandungan badan perlu disertakan:

  • Butiran mesyuarat
  • Tempat yang dicadangkan
  • Cadangan tarikh dan masa

Dan, bergantung kepada tetapan penganjur, yang arahan pautan harus dibentangkan? Berikut adalah beberapa soalan yang muncul. Sekiranya kami membenarkan penerima:

  • Menerima setiap pilihan, iaitu semua tempat, tarikh dan masa boleh diterima
  • Terima semua tempat atau semua tarikh dan masa secara berasingan
  • Menerima tempat dan tarikh dan masa tertentu
  • Lihat peta untuk bakal tempat dan akhirnya laman web dan pautan Yelp
  • Hantar nota kembali kepada penganjur untuk paparan mesyuarat
  • Cadangkan tempat atau tarikh dan masa yang baru
  • Pilih tempat atau tarikh dan masa
  • Muktamadkan mesyuarat

Akhirnya, footer perlu menyokong:

  • Notis Alpha dengan permintaan maklum balas
  • Pilihan untuk menyekat penghantar
  • Pilihan untuk berhenti melanggan dari jemputan Perancang Mesyuarat masa depan
  • Maklumat syarikat dan maklumat hubungan

Saya tahu ia sukar untuk memvisualisasikan semua ini-ini bukan episod mudah untuk dibina. Berikut adalah contoh jemputan yang saya bina:

Meeting Planner Invitation Example

Buat masa ini, saya menggunakan arahan yang diterima dan menolak untuk menunjukkan kepada peserta bahawa mereka hanya menandakan sama ada atau tidak tempat atau tarikh dan masa berfungsi untuk mereka atau tidak. Walau bagaimanapun, untuk kesederhanaan, saya menawarkan menerima semua tempat dan waktu, menerima semua tempat dan menerima semua masa untuk menguruskan ini dalam langkah yang lebih cepat.

Kesemua ini longgar berdasarkan borang jemputan mesyuarat sebenar dari episod terakhir. Di bawah, anda boleh melihat bahagian jemputan yang menawarkan konfigurasi tempat dan masa:

Meeting Planner Invitation - View of Places and Times

Perhatikan bahawa e-mel menyediakan beberapa fungsi canggih yang dibina dalam episod terakhir untuk membolehkan penganjur menawarkan tahap kawalan yang lebih baik kepada peserta seperti mencadangkan tempat dan masa yang baru, memilih tempat dan masa akhir, dan sebagainya.

Meeting Planner Invitation - Updating Your Meeting Settings

Ia menjadi jelas kepada saya dengan cepat bahawa melabur lebih banyak dalam merancang e-mel dan menawarkan konfigurasi jemputan yang lebih mudah diperlukan pada masa akan datang. Sekali lagi, saya perlu menyimpannya untuk episod yang akan datang.

Sebagai contoh, salah satu rakan uji alpha pertama saya mencadangkan bahawa mereka berharap mereka dapat menunjukkan bahawa beberapa tempat hanya bekerja pada tarikh dan masa tertentu dan sebaliknya. Pada akhirnya, saya mungkin perlu menyatukan tempat dan tarikh & masa menjadi satu pilihan model.

Buat masa ini, mari kita semak bagaimana saya menyampaikan jemputan di atas kerana ia adalah.

Memberi Jemputan

Meeting Planner Invitation - The Command Bar with Send

Apa yang berlaku apabila penganjur klik Hantar? Pada mulanya, saya menjangkakan bahawa saya perlu menulis terus kepada Mailgun API, yang saya teliti dalam tutorial Envato Tuts+ yang lebih awal. Walau bagaimanapun, sokongan Yii2 untuk e-mel agak kaya, dan saya dapat memanfaatkan sokongan pandangan asalnya untuk susun atur e-mel (kedua-dua HTML dan teks) dan hanya menyampaikannya menggunakan pengesahan akaun SMTP Mailgun saya. Ini juga menyokong melampirkan fail acara masa hadapan (.ics) untuk mengimport mesyuarat ke dalam kalendar.

Nota: Saya peminat besar Mailgun, tetapi saya juga telah melakukan pembangunan untuk mereka sebagai perunding dan ditulis untuk blog mereka dan Envato Tuts+.

Sebelum meneruskan, saya menggalakkan anda untuk melihat dengan cepat dokumentasi Mailing Yii2. Ia menawarkan gambaran yang sangat baik.

Pertama, saya menambah tetapan konfigurasi SwiftMailer yang lebih terperinci ke /common/config/main-local.php:

Ini membolehkan komponen SwiftMailer Yii untuk menghantar e-mel saya melalui perkhidmatan SMTP asas Mailgun.

Anda perlu mendapatkan tetapan SMTP Mailgun anda dari panel kawalannya untuk domain anda:

Meeting Planner Invitation - Mailgun SMTP Settings

Sudah tentu, anda juga perlu memastikan SwiftMailer adalah sebahagian daripada konfigurasi fail composer.json anda sebelum menjalankan kemas kini komposer:

Seterusnya, saya membuat konfigurasi fail paparan untuk digunakan oleh SwiftMailer. Pertama, perlu ada susun atur induk untuk kedua-dua HTML dan teks. Kemudian, mesti ada fail kandungan individu untuk masing-masing juga:

Meeting Planner Invitation - The Folder and Files in Mail Layouts

Tidak semua ini didokumentasikan sepenuhnya untuk Yii, jadi semoga contoh ini akan memberi panduan. Ambil perhatian bahawa fail paparan akhir-html dan -text ditambahkan kemudian untuk episod masa depan.

Lazimnya, fail susun atur/html.php agak mudah:

Walau bagaimanapun, saya banyak menambahnya untuk mula bekerja dengan gaya dan pemformatan e-mel HTML yang ditawarkan kepada komuniti sumber terbuka oleh Mailchimp.

SwiftMailer Yii secara amnya secara automatik menukar pandangan HTML anda ke paparan serasi teks untuk anda. Kemungkinan besar, saya mahu paparan teks yang lebih ringkas dan ringkas untuk undangan, tetapi pada masa ini, saya akan menangguhkan menyemak hasil e-mel berasaskan teks kod saya.

Dalam model Meeting.php, saya telah menulis fungsi menghantar yang mengumpulkan semua data yang diperlukan untuk membina pandangan jemputan saya yang ditunjukkan di atas. Buat masa ini, saya meninggalkan bahagian-bahagian yang berkaitan dengan episod seterusnya untuk membina pautan arahan. Pada asasnya, saya menggunakan Yii::$app->mailer compose() dan hantar():

Fungsi tersebut membina mesej menggunakan tata letak dan pandangan HTML kami dan kemudian melepaskan mesej yang dihasilkan dengan data yang diperibadikan kepada perkhidmatan SMTP Mailgun. Kami dapat menggunakan pelaksanaan Yii model MVC untuk penghantaran e-mel.

Masalah Dengan Komposer

Seperti yang saya telah menggunakan Komposer dengan Yii, saya sering menghadapi banyak masalah dengannya yang sukar untuk dikesan. Paling kerap, ia berkaitan dengan plugin "yiisoft/yii2-omposer" memerlukan ralat komposer-plugin-api 1.0.0, tetapi kali ini, saya menghadapi masalah mengemas kini Mailgun. Versi terkini API Mailgun memerlukan pengemaskinian semasa untuk membingungkan. Plugin Yii yang terdahulu yang digunakan dalam MeetingPlanner memerlukan tetap, keluar dari versi guzzle tarikh. Jadi, saya perlu mengkonfigurasi komposer menggunakan alias.

Pada dasarnya, saya mengarahkan komposer untuk menyegerakkan versi terbaru guzzle tetapi memberitahu aplikasi itu menggunakan versi lama. Dalam komposer.json, alias kelihatan seperti ini:

Saya mengarahkannya untuk memasang "guzzlehttp/guzzle": "6.2.0 sebagai 4.2.3" dan itu menjadikan semuanya berfungsi dengan baik, sekurang-kurangnya dalam kes ini. Kadang-kadang pemaju plugin memerlukan versi tertentu perpustakaan untuk beroperasi dengan betul. Komposer kebanyakannya berguna, tetapi kadangkala ia pasti menyeronokkan.

Mengemaskini Penciptaan Mesyuarat

Semasa saya bereksperimen dengan jemputan, saya memutuskan untuk menyesuaikan paparan penciptaan mesyuarat untuk lebih jelas menyokong bidang subjek. Ini membolehkan pengguna menulis baris subjek seolah-olah mereka menghantar e-mel untuk menjemput seseorang ke mesyuarat tanpa Perancang Mesyuarat. UX untuk ini perlu diulang dan dipermudahkan dari masa ke masa.

Meeting Planner Invitation - Create a Meeting

Ini menyediakan garis subjek ideal dalam e-mel untuk jemputan mesyuarat. Sudah tentu, untuk memberikan ini, saya perlu melanjutkan model Mesyuarat.

Saya telah membuat penghijrahan baru dipanggil extend_meeting_table_add_subject yang menambah medan subjek:

Dan saya terpaksa menambah sokongan untuk bidang baru untuk fail _form.php mesyuarat dan model.

Berikut adalah petikan dari apa yang ditambahkan ke model Meeting.php:

Halaman Kemaskini Peta yang Tempat-tempat

Pada mulanya, saya jemputan map pautan pergi terus kepada Google Maps, tetapi saya sedar ia akan menjadi lebih baik untuk mengaitkan mereka dengan paparan peta yang tertanam pada Mesyuarat Perancang yang merupakan sebahagian daripada jemputan mesyuarat. Dalam kes saya, saya telah mencipta gambaran yang peta dengan kembali ke butang Mesyuarat:

Meeting Planner Invitation - Viewing a Place within a Meeting Invitation

Untuk ini, saya mencipta pandangan baharu yang dibina di /views/place/view.php. Berikut adalah /views/meeting/viewplace.php:

Apa yang akan datang?

Seperti yang anda lihat, mendapatkan jemputan e-mel pertama menimbulkan semua jenis isu dan memerlukan banyak kemas kini bersaiz kecil dan sederhana. Tetapi, dengan asas asas untuk mereka selesai, kita dapat merenungkan kerumitan apa yang telah dibuat. Dengan kata lain, apa yang diperlukan seterusnya:

  • Pautan arahan dikesahkan. Apabila peserta mengklik pautan arahan dalam e-mel, bagaimana kami akan mengesahkannya, terutama jika mereka tidak pernah mendaftar dengan permohonan kami?
  • Memuktamadkan mesyuarat berdasarkan maklum balas. Apabila para peserta membuat pilihan dan penganjur bersedia untuk memuktamadkan mesyuarat, apa perubahan dan kemas kini yang diperlukan untuk menyokongnya?
  • Memantau proses perubahan yang dibuat oleh peserta kepada jemputan. Bagaimanakah kita akan memantau perubahan pada butiran mesyuarat dan memilih bila untuk memberitahu penganjur dan peserta?
  • Memberitahu penganjur dan peserta perubahan. Apa yang perlu kita beritahu mereka, dan apa pilihan yang perlu ditawarkan apabila kita memberitahu mereka?
  • Membina fail Kalendar (.ics) untuk diimport ke Kalendar Google, Outlook dan Kalendar Apple dengan butiran jemputan. Setelah mesyuarat dimuktamadkan, kami boleh menghantar fail .ics yang boleh dimuat turun.
  • Membina pandangan mesyuarat yang telah dimuktamadkan sepenuhnya. Apakah butiran mesyuarat harus kelihatan seperti ketika tidak lagi perlu memberikan perintah untuk memilih tempat dan waktu? Tetapi, juga, apa perintah yang diperlukan untuk penjadualan semula, peralihan masa, pembatalan, menukar lokasi atau tarikh dan masa, dan lain-lain?

Episod berikutnya akan meneroka beberapa soalan ini, memfokuskan pada pautan dalam jemputan yang penerima akan mahu bertindak balas walaupun pada mulanya tidak pernah berdaftar dengan Perancang Mesyuarat sebelum ini. Isu-isu lain perlu menunggu lebih lama.

Saya juga mula bereksperimen dengan WeFunder berdasarkan pelaksanaan peraturan crowdfunding SEC yang baru. Sila pertimbangkan mengikuti profil kami. Saya boleh menulis tentang ini lebih sebagai sebahagian daripada siri ini.

Tonton tutorial yang akan datang di Bangunan Saya Permulaan Anda Dengan siri PHP-Saya harap anda bersetuju bahawa ini semakin menarik!

Sila berasa bebas untuk menambah soalan dan komen anda di bawah; Saya biasanya menyertai perbincangan. Anda juga boleh menghubungi saya di Twitter @reifman.

Pautan Berkaitan

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.