Keizinan: Memahami Dasar dalam Laravel
Mengawal perkara yang boleh atau tidak boleh dilakukan oleh pengguna dalam aplikasi anda ialah salah satu perkara paling penting yang perlu anda lakukan semasa membina aplikasi dunia sebenar.
Sebagai contoh, dalam aplikasi todo, anda tidak mahu pengguna boleh mengedit atau memadam todo pengguna lain.
Dalam artikel ini, anda akan mempelajari salah satu cara yang lancar untuk melakukan ini dalam Laravel dengan menggunakan dasar untuk mengawal perkara yang boleh dilakukan pengguna dengan membina aplikasi todo yang mudah.
Untuk mengikuti tutorial ini, anda perlu mempunyai pemahaman asas tentang Laravel dan struktur aplikasinya.
Buat Aplikasi Asas
Jalankan arahan berikut untuk mencipta aplikasi Laravel baharu dalam folder yang anda inginkan dan pindah ke dalamnya:
composer create-project laravel/laravel todo-app && cd todo-app
Seterusnya, jalankan arahan berikut untuk memasang Laravel Breeze:
php artisan breeze:install
Breeze akan memperancah aplikasi baharu anda dengan pengesahan supaya pengguna anda boleh mendaftar, log masuk, log keluar dan melihat papan pemuka mereka yang diperibadikan.
Selepas itu, susun aset aplikasi anda dengan menjalankan arahan berikut:
npm install && npm run dev
Laravel disertakan dengan pangkalan data SQLite berasaskan fail secara lalai, jadi perkara seterusnya yang perlu anda lakukan ialah menyambungkan fail pangkalan data aplikasi anda kepada pemapar pangkalan data seperti TablePlus atau mana-mana yang anda suka.
Selepas menyambungkan pangkalan data anda kepada pemapar, jalankan arahan berikut untuk memindahkan jadual yang tersedia ke dalam pangkalan data anda:
php artisan migrate
Setelah itu selesai, jalankan arahan berikut untuk melihat aplikasi anda dalam penyemak imbas:
php artisan serve
Anda kini sepatutnya melihat aplikasi Laravel baharu anda di localhost:8000 kelihatan seperti ini:
Anda kini boleh pergi ke halaman daftar untuk mencipta pengguna dan mengakses papan pemuka, iaitu keseluruhan aplikasi pada ketika ini.
Persediaan Model
Model dalam Laravel digunakan untuk mengawal jadual pangkalan data. Gunakan arahan berikut untuk mencipta model Todo dalam folder App/Models:
php artisan make:model Todo
Seterusnya, di dalam fail yang baru dibuat, gantikan kelas Todo dengan kod berikut:
class Todo extends Model { use HasFactory; protected $fillable = [ 'title', 'description', 'completed', 'user_id' ]; public function user() { return $this->belongsTo(User::class); } }
Kod di atas akan membolehkan pengguna menyerahkan borang dengan sifat $fillable; ia juga mentakrifkan hubungan antara pengguna dan Todo; dalam kes ini, todo kepunyaan pengguna. Mari lengkapkan persediaan perhubungan dengan menambahkan kod berikut pada fail App/Models/User.php:
public function todos() { return $this->hasMany(Todo::class); }
Kod di atas akan menyambungkan model Pengguna kepada model Todo supaya ia boleh mempunyai banyak tugasan.
Persediaan Migrasi
Migrasi dalam Laravel digunakan untuk menentukan perkara yang sepatutnya ada dalam jadual pangkalan data. Jalankan arahan berikut untuk mencipta migrasi di dalam folder pangkalan data/penghijrahan:
composer create-project laravel/laravel todo-app && cd todo-app
Seterusnya, gantikan fungsi atas dalam fail baharu dengan yang berikut yang akan menambah jadual todo pada pangkalan data dengan lajur id, user_id, tajuk, perihalan, lengkap dan cap masa:
php artisan breeze:install
Seterusnya, jalankan arahan berikut untuk menambah jadual todos ke pangkalan data:
npm install && npm run dev
Persediaan Dasar
Dasar dalam Laravel membolehkan anda menentukan siapa yang boleh melakukan apa dengan sumber tertentu, dalam kes ini, todos.
Mari kita lihat cara ia berfungsi dengan menjana TodoPolicy di dalam folder App/Policies menggunakan arahan berikut:
php artisan migrate
Seterusnya, dalam fail TodoPolicy yang baru dibuat, gantikan kelas TodoPolicy dengan kod berikut:
php artisan serve
Kod di atas menyatakan bahawa pengguna boleh membuat todo, tetapi hanya boleh melihat, mengemas kini atau memadam todo kepunyaan mereka.
Seterusnya, mari sediakan pengawal di bahagian seterusnya.
Persediaan Pengawal
Pengawal dalam Laravel mengawal kefungsian apl untuk sumber tertentu. Jalankan arahan berikut untuk menjana TodoController di dalam App/Http/Controllers:
php artisan make:model Todo
Tambahkan kod berikut pada bahagian atas fail TodoController yang baru dibuat untuk mengimport model Todo untuk operasi pangkalan data dan kelas Gate untuk kebenaran:
class Todo extends Model { use HasFactory; protected $fillable = [ 'title', 'description', 'completed', 'user_id' ]; public function user() { return $this->belongsTo(User::class); } }
Kaedah Indeks
Ganti kaedah indeks dengan kod berikut yang mengambil dan mengembalikan semua tugasan pengguna yang log masuk:
public function todos() { return $this->hasMany(Todo::class); }
Kaedah The Gate::authorize mengesahkan bahawa pengguna telah log masuk menggunakan kaedah viewAny policy yang anda takrifkan dalam bahagian sebelumnya.
Buat Kaedah
Ganti kaedah buat dengan kod berikut yang mengesahkan pengguna telah log masuk sebelum mengembalikan borang buat todo kepada pengguna supaya mereka boleh membuat todos:
php artisan make:migration create_todos_table
Kaedah Kedai
Ganti kaedah kedai dengan kod berikut yang menyemak sama ada pengguna boleh membuat todo, mengesahkan permintaan, membuat todo dan mengubah hala pengguna ke halaman senarai todo:
public function up(): void { Schema::create('todos', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->constrained()->onDelete('cascade'); $table->string('title'); $table->text('description')->nullable(); $table->boolean('completed')->default(false); $table->timestamps(); }); }
Kaedah Edit
Ganti kaedah edit dengan kod berikut yang mengesahkan pengguna boleh mengedit todo itu sebelum mengembalikan borang edit todo yang diisi dengan todo yang dipilih kepada pengguna supaya mereka boleh mengeditnya:
php artisan migrate
Kaedah Kemas Kini
Ganti kaedah kemas kini dengan kod berikut yang menyemak sama ada pengguna boleh mengemas kini todo, mengesahkan permintaan, mengemas kini todo yang dipilih dan mengubah hala pengguna ke halaman senarai todo:
php artisan make:policy TodoPolicy --model=Todo
Kaedah Musnah
Ganti kaedah musnah dengan kod berikut yang menyemak sama ada pengguna boleh memadamkan todo, memadamkannya dan mengubah hala pengguna ke halaman senarai todo:
class TodoPolicy { /** * Determine if the user can view any todos. */ public function viewAny(User $user): bool { return true; } /** * Determine if the user can view the todo. */ public function view(User $user, Todo $todo): bool { return $user->id === $todo->user_id; } /** * Determine if the user can create todos. */ public function create(User $user): bool { return true; } /** * Determine if the user can update the todo. */ public function update(User $user, Todo $todo): bool { return $user->id === $todo->user_id; } /** * Determine if the user can delete the todo. */ public function delete(User $user, Todo $todo): bool { return $user->id === $todo->user_id; } }
Fail TodoController anda kini sepatutnya kelihatan seperti ini:
composer create-project laravel/laravel todo-app && cd todo-app
Persediaan Pandangan
Sekarang kaedah TodoController anda sudah siap, anda kini boleh membuat paparan untuk aplikasi anda dengan mencipta folder todos baharu di dalam folder sumber/pandangan. Selepas itu, buat fail create.blade.php, edit.blade.php, index.blade.php dalam folder todos baharu.
Paparan Indeks
Tampal kod berikut di dalam index.blade.php:
php artisan breeze:install
Cipta Paparan
Tampal kod berikut di dalam create.blade.php:
npm install && npm run dev
Edit Paparan
Tampal kod berikut di dalam edit.blade.php:
php artisan migrate
Persediaan Laluan
Mengendalikan laluan untuk TodoController anda agak mudah menggunakan kaedah sumber dalam Laravel. Lakukan itu dengan menambah kod berikut pada penghujung folder route/web.php seperti:
php artisan serve
Kod di atas menggunakan perisian tengah auth untuk melindungi sumber todos. Anda kini sepatutnya boleh melawati laluan berikut dalam aplikasi anda selepas log masuk:
- /todos: Senaraikan semua todos pengguna
- /todos/create: Menunjukkan borang untuk membuat todos
- /todos/edit/1: Menunjukkan borang untuk mengedit todo dengan id yang diberikan; 1 dalam kes ini.
Kini anda boleh membuat, mengedit dan memadam todos, TETAPI hanya sebagai pengguna log masuk dan pemilik todos yang dipilih dalam hal mengedit dan memadam.
Kesimpulan
Dan itu sahaja! Anda baru sahaja mencipta aplikasi todo realistik yang membenarkan pengguna membuat, melihat, mengedit dan memadam SAHAJA todo mereka sendiri. Sila beritahu saya jika anda mempunyai sebarang pembetulan, cadangan atau soalan dalam ulasan!
Akhir sekali, ingat untuk mengikuti saya di sini di Dev, LinkedIn dan Twitter. Terima kasih banyak kerana membaca, dan jumpa lagi pada yang seterusnya!
Atas ialah kandungan terperinci Keizinan: Memahami Dasar dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Alipay Php ...

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Sesi rampasan boleh dicapai melalui langkah -langkah berikut: 1. Dapatkan ID Sesi, 2. Gunakan ID Sesi, 3. Simpan sesi aktif. Kaedah untuk mengelakkan rampasan sesi dalam PHP termasuk: 1. Gunakan fungsi Sesi_Regenerate_ID () untuk menjana semula ID Sesi, 2. Data sesi stor melalui pangkalan data, 3.

Fungsi penghitungan dalam Php8.1 meningkatkan kejelasan dan jenis keselamatan kod dengan menentukan pemalar yang dinamakan. 1) Penghitungan boleh menjadi bilangan bulat, rentetan atau objek, meningkatkan kebolehbacaan kod dan keselamatan jenis. 2) Penghitungan adalah berdasarkan kelas dan menyokong ciri-ciri berorientasikan objek seperti traversal dan refleksi. 3) Penghitungan boleh digunakan untuk perbandingan dan tugasan untuk memastikan keselamatan jenis. 4) Penghitungan menyokong penambahan kaedah untuk melaksanakan logik kompleks. 5) Pemeriksaan jenis dan pengendalian ralat yang ketat boleh mengelakkan kesilapan biasa. 6) Penghitungan mengurangkan nilai sihir dan meningkatkan keupayaan, tetapi memberi perhatian kepada pengoptimuman prestasi.

Penerapan prinsip pepejal dalam pembangunan PHP termasuk: 1. Prinsip Tanggungjawab Tunggal (SRP): Setiap kelas bertanggungjawab untuk hanya satu fungsi. 2. Prinsip Terbuka dan Tutup (OCP): Perubahan dicapai melalui lanjutan dan bukannya pengubahsuaian. 3. Prinsip Penggantian Lisch (LSP): Subkelas boleh menggantikan kelas asas tanpa menjejaskan ketepatan program. 4. Prinsip Pengasingan Antara Muka (ISP): Gunakan antara muka halus untuk mengelakkan kebergantungan dan kaedah yang tidak digunakan. 5. Prinsip Inversi Ketergantungan (DIP): Modul peringkat tinggi dan rendah bergantung kepada abstraksi dan dilaksanakan melalui suntikan ketergantungan.

Bagaimana cara debug mod CLI dalam phpstorm? Semasa membangun dengan PHPStorm, kadang -kadang kita perlu debug PHP dalam mod Interface Line Command (CLI) ...

Menghantar data JSON menggunakan perpustakaan Curl PHP dalam pembangunan PHP, sering kali perlu berinteraksi dengan API luaran. Salah satu cara biasa ialah menggunakan perpustakaan curl untuk menghantar post ...

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.
