3
Salah satu daripada (beberapa) perkara yang saya tidak suka tentang Laravel adalah bahawa anda tidak boleh memindahkan kod pengesahan dari pengawal anda ke model anda dengan mudah. Apabila saya menulis perisian, saya suka menggunakan prinsip "Model Lemak, Skinny Controllers". Oleh itu, bagi saya, menulis kod pengesahan dalam pengawal bukanlah perkara yang baik.
seperti yang anda boleh bayangkan, ia adalah lanjutan dari kelas model yang fasih, pada dasarnya. Pakej ini dilengkapi dengan beberapa fungsi baru, utiliti dan kaedah yang didedikasikan untuk pengesahan input dan perkara -perkara kecil yang lain.
Takeaways Key
Pengesahan yang dipertingkatkan: Ardent memudahkan proses pengesahan dengan membenarkan peraturan ditakrifkan secara langsung dalam model, meningkatkan organisasi kod dan pemeliharaan, terutama dalam projek yang lebih besar.
Model auto-hidrat: Ciri ini secara automatik mengisi atribut model dari input borang, mengurangkan kod boilerplate dalam pengawal dan membuat pembersih codebase dan lebih efisien.
Pengguna
id
first_name
e -mel
php artisan migrate:make todo_setup
Sekarang kita mempunyai jadual kita. Sudah tiba masanya untuk mencipta model kami. Malah di sini kita mempunyai sedikit baris untuk menulis. Inilah model pengguna (yang juga lalai).
<span><span><?php </span></span><span> </span><span> <span>use Illuminate<span>\Database\Schema\Blueprint</span>; </span></span><span> <span>use Illuminate<span>\Database\Migrations\Migration</span>; </span></span><span> </span><span> <span>class TodoSetup extends Migration { </span></span><span> </span><span> <span>/** </span></span><span><span> * Run the migrations. </span></span><span><span> * </span></span><span><span> * <span>@return <span>void</span> </span></span></span><span><span> */ </span></span><span> <span>public function up() </span></span><span> <span>{ </span></span><span> <span>Schema<span>::</span>create('users', function(Blueprint $table) </span></span><span> <span>{ </span></span><span> <span>$table->increments('id')->unsigned(); </span></span><span> </span><span> <span>$table->string('first_name'); </span></span><span> <span>$table->string('last_name'); </span></span><span> <span>$table->string('email'); </span></span><span> <span>$table->string('password', 60); </span></span><span> </span><span> <span>$table->timestamps(); </span></span><span> <span>}); </span></span><span> </span><span> <span>Schema<span>::</span>create('tasks', function(Blueprint $table) </span></span><span> <span>{ </span></span><span> <span>$table->increments('id'); </span></span><span> </span><span> <span>$table->string('name'); </span></span><span> <span>$table->boolean('status'); </span></span><span> </span><span> <span>$table->integer('user_id')->unsigned(); </span></span><span> </span><span> <span>$table->timestamps(); </span></span><span> </span><span> <span>$table->index('user_id'); </span></span><span> <span>}); </span></span><span> <span>} </span></span><span> </span><span> <span>/** </span></span><span><span> * Reverse the migrations. </span></span><span><span> * </span></span><span><span> * <span>@return <span>void</span> </span></span></span><span><span> */ </span></span><span> <span>public function down() </span></span><span> <span>{ </span></span><span> <span>Schema<span>::</span>dropIfExists('users'); </span></span><span> <span>Schema<span>::</span>dropIfExists('tasks'); </span></span><span> <span>} </span></span><span> </span><span> <span>}</span></span>
Saya hanya menambah kaedah tugas untuk menggambarkan hubungan dengan model tugas.
<span><span><?php </span></span><span> </span><span> <span>use Illuminate<span>\Auth\UserTrait</span>; </span></span><span> <span>use Illuminate<span>\Auth\UserInterface</span>; </span></span><span> <span>use Illuminate<span>\Auth\Reminders\RemindableTrait</span>; </span></span><span> <span>use Illuminate<span>\Auth\Reminders\RemindableInterface</span>; </span></span><span> </span><span> <span>class User extends Eloquent implements UserInterface, RemindableInterface { </span></span><span> </span><span> <span>use UserTrait, RemindableTrait; </span></span><span> </span><span> <span>/** </span></span><span><span> * The database table used by the model. </span></span><span><span> * </span></span><span><span> * <span>@var <span>string</span> </span></span></span><span><span> */ </span></span><span> <span>protected $table = 'users'; </span></span><span> </span><span> <span>/** </span></span><span><span> * The attributes excluded from the model's JSON form. </span></span><span><span> * </span></span><span><span> * <span>@var <span>array</span> </span></span></span><span><span> */ </span></span><span> <span>protected $hidden = array('password', 'remember_token'); </span></span><span> </span><span> <span>public function tasks() </span></span><span> <span>{ </span></span><span> <span>return $this->hasMany('Task'); </span></span><span> <span>} </span></span><span> </span><span> <span>}</span></span>
Kami hanya membuat titik permulaan kami. Mulai sekarang, selepas pemasangan, kami akan melihat dua situasi yang berbeza: pertama, versi "normal" kod tanpa bersemangat. Selepas itu, kami akan membuat perbandingan dengan versi "bertambah baik". Anda akan melihat perbezaannya, percayalah.
mari kita mulakan!
Memasang Ardent sangat mudah dengan komposer. Cukup tambahkan kebergantungan kepada fail komposer.json projek anda.
<span><span><?php </span></span><span> </span><span> <span>class Task extends <span>\Eloquent</span> { </span></span><span> <span>protected $fillable = []; </span></span><span> </span><span> <span>public function user() </span></span><span> <span>{ </span></span><span> <span>return $this->belongsTo('User'); </span></span><span> <span>} </span></span><span> <span>}</span></span>
Kemudian, selepas kemas kini, anda hanya perlu melanjutkan kelas yang bersemangat dalam model anda seperti:
<span>{ </span> <span>"require": { </span> <span>"laravelbook/ardent": "2.*" </span> <span>} </span> <span>}</span>
... dan anda sudah bersedia untuk pergi!
Perkara pertama yang perlu dilakukan ialah menganalisis bagaimana Ardent menjadikan kehidupan kita lebih mudah dalam melaksanakan pengesahan. Kami sudah tahu bagaimana untuk melakukannya dengan Laravel. Mari buat contoh klasik: kaedah pos yang akan mengendalikan data yang datang dari borang.
Dalam situasi "normal" kita akan membuat sesuatu seperti ini:
<span><span><?php </span></span><span> <span>class User extends <span>\LaravelBook\Ardent\Ardent</span> { </span></span><span> <span>// model code here! </span></span><span> <span>}</span></span>
... bagaimana dengan bersemangat?
Dengan bersemangat, perkara berubah sedikit. Pertama sekali, seperti yang anda boleh bayangkan dengan mudah, peraturan pengesahan akan dipindahkan terus ke dalam model: di sini kita akan memulakan "restyle" kita. Oleh itu, buka fail model dan ubahnya seperti:
<span><span><?php </span></span><span> </span><span> <span>public function postSignup() </span></span><span> <span>{ </span></span><span> <span>$rules = array( </span></span><span> <span>'first_name' => 'required', </span></span><span> <span>'last_name' => 'required', </span></span><span> <span>'email' => 'required|email|unique:users', </span></span><span> <span>'password' => 'required|min:8' </span></span><span> <span>); </span></span><span> </span><span> <span>$messages = array( </span></span><span> <span>'first_name.required' => 'First name is required.', </span></span><span> <span>'last_name.required' => 'Last name is required.', </span></span><span> <span>'email.required' => 'Email is required.', </span></span><span> <span>'password.required' => 'Password is required.', </span></span><span> </span><span> <span>'email.email' => 'Use a real email address!', </span></span><span> <span>'email.unique' => 'This email address already exists!', </span></span><span> <span>'password.min' => 'Password must be at least 8 character long.' </span></span><span> <span>); </span></span><span> </span><span> <span>$validator = Validator<span>::</span>make(Input<span>::</span>all(), $rules, $messages); </span></span><span> </span><span> <span>if($validator->fails()) </span></span><span> <span>{ </span></span><span> <span>return Redirect<span>::</span>to('user/signup')->with('errors', $validator->messages()); </span></span><span> <span>} </span></span><span> </span><span> <span>$user = new User; </span></span><span> </span><span> <span>$user->first_name = Input<span>::</span>get('first_name'); </span></span><span> <span>$user->last_name = Input<span>::</span>get('last_name'); </span></span><span> <span>$user->email = Input<span>::</span>get('email'); </span></span><span> <span>$user->password = Hash<span>::</span>make(Input<span>::</span>get('password')); </span></span><span> </span><span> <span>if($user->save()) </span></span><span> <span>{ </span></span><span> <span>$status = 1; </span></span><span> <span>} </span></span><span> <span>else </span></span><span> <span>{ </span></span><span> <span>$status = 0; </span></span><span> <span>} </span></span><span> </span><span> <span>return Redirect<span>::</span>to('user/signup')->with('status', $status); </span></span><span> <span>}</span></span>
apa yang berlaku? Tidak banyak: Kami menukar kelas asas model kami (dari fasih hingga bersemangat) dan kami berpindah (menggunakan sintaks yang sama, hanya satu salinan) peraturan pengesahan di sini, dengan mesej ralat tersuai.
Jadi, persoalannya sekarang ialah: Apa yang akan kita tulis dalam pengawal kami?
mari kita periksa:
<span><span><?php </span></span><span> </span><span> <span>use Illuminate<span>\Auth\UserTrait</span>; </span></span><span> <span>use Illuminate<span>\Auth\UserInterface</span>; </span></span><span> <span>use Illuminate<span>\Auth\Reminders\RemindableTrait</span>; </span></span><span> <span>use Illuminate<span>\Auth\Reminders\RemindableInterface</span>; </span></span><span> </span><span> <span>class User extends <span>\LaravelBook\Ardent\Ardent</span> implements UserInterface, RemindableInterface { </span></span><span> </span><span> <span>public static $rules = array( </span></span><span> <span>'first_name' => 'required', </span></span><span> <span>'last_name' => 'required', </span></span><span> <span>'email' => 'required|email|unique:users', </span></span><span> <span>'password' => 'required|min:8' </span></span><span> <span>); </span></span><span> </span><span> <span>public static $customMessages = array( </span></span><span> <span>'first_name.required' => 'First name is required.', </span></span><span> <span>'last_name.required' => 'Last name is required.', </span></span><span> <span>'email.required' => 'Email is required.', </span></span><span> <span>'password.required' => 'Password is required.', </span></span><span> </span><span> <span>'email.email' => 'Use a real email address!', </span></span><span> <span>'email.unique' => 'This email address already exists!', </span></span><span> <span>'password.min' => 'Password must be at least 8 character long.' </span></span><span> <span>); </span></span><span> </span><span> <span>use UserTrait, RemindableTrait; </span></span><span> </span><span> <span>/** </span></span><span><span> * The database table used by the model. </span></span><span><span> * </span></span><span><span> * <span>@var <span>string</span> </span></span></span><span><span> */ </span></span><span> <span>protected $table = 'users'; </span></span><span> </span><span> <span>/** </span></span><span><span> * The attributes excluded from the model's JSON form. </span></span><span><span> * </span></span><span><span> * <span>@var <span>array</span> </span></span></span><span><span> */ </span></span><span> <span>protected $hidden = array('password', 'remember_token'); </span></span><span> </span><span> <span>public function tasks() </span></span><span> <span>{ </span></span><span> <span>return $this->hasMany('Task'); </span></span><span> <span>} </span></span><span> </span><span> <span>}</span></span>
Tiada arahan pengesahan di sini. Mereka semua hilang. Ia bukan sekadar "bergerak", bagaimanapun: kaedah $ user-> simpan (), sekarang, akan kembali palsu jika terdapat beberapa masalah dalam fasa pengesahan. Kemudian, anda akan dapat mengambil kesilapan dengan kaedah $ user-> ralat ()-> semua (). Tiada Kelas Aneh: Objek yang dikembalikan akan menjadi beg mesej klasik yang mungkin anda temui semasa bekerja dengan Laravel.
Sekarang, kemungkinan besar anda berfikir "OK, tetapi apakah kelebihan sebenar, di luar baris kod yang lebih sedikit?"
Mari kita mulakan dengan yang paling penting: organisasi kod yang lebih baik bermaksud pemeliharaan projek yang lebih baik. Dalam aplikasi mudah, anda tidak boleh merasakannya sebagai keutamaan, tetapi apabila ia datang kepada projek -projek yang lebih besar, perkara -perkara boleh mudah merosakkan dengan satu keputusan yang salah. Biarkan saya membuat contoh keadaan dunia sebenar. Kami membangunkan aplikasi senarai tugas yang hebat, dan ia berkembang dengan cepat. Kami pasti memerlukan API yang tenang untuk aplikasi mudah alih. Menggunakan pengawal dalam cara "normal" bermakna menulis rutin pendaftaran lain untuk API. Dua blok berbeza dengan kod yang sama! Ini tidak baik. Di manakah prinsip lama kering (jangan ulangi diri anda)?
Jadi, amalan terbaik akan menulis kaedah pendaftaran () dalam model yang mengendalikan segala -galanya. Menggunakan Ardent bermaksud mengendalikan segala -galanya: dari pengesahan ke prosedur simpan. Tanpa itu, kita tidak dapat mencapai fasa pertama.
Kelebihan kedua adalah yang lebih praktikal: model auto-hidrat. Mari kita temukan bersama.
Kaedah pos kami () mengira tepatnya tiga belas baris kod. Walaupun ia kelihatan sukar, Ardent dapat menurunkan jumlah itu lagi. Lihat contoh ini:
php artisan migrate:make todo_setup
Tiada kesilapan di sini. Anda mungkin sudah memahami apa yang berlaku.
Ardent mempunyai ciri model auto-hidrat model. Ini bermakna apabila anda membuat objek dan panggil kaedah $ user-> simpan (), setiap bidang diisi secara automatik dengan data objek input. Sudah tentu, anda perlu memberikan nama yang betul di setiap bidang borang dengan sewajarnya.
Jadi, kod ini:
<span><span><?php </span></span><span> </span><span> <span>use Illuminate<span>\Database\Schema\Blueprint</span>; </span></span><span> <span>use Illuminate<span>\Database\Migrations\Migration</span>; </span></span><span> </span><span> <span>class TodoSetup extends Migration { </span></span><span> </span><span> <span>/** </span></span><span><span> * Run the migrations. </span></span><span><span> * </span></span><span><span> * <span>@return <span>void</span> </span></span></span><span><span> */ </span></span><span> <span>public function up() </span></span><span> <span>{ </span></span><span> <span>Schema<span>::</span>create('users', function(Blueprint $table) </span></span><span> <span>{ </span></span><span> <span>$table->increments('id')->unsigned(); </span></span><span> </span><span> <span>$table->string('first_name'); </span></span><span> <span>$table->string('last_name'); </span></span><span> <span>$table->string('email'); </span></span><span> <span>$table->string('password', 60); </span></span><span> </span><span> <span>$table->timestamps(); </span></span><span> <span>}); </span></span><span> </span><span> <span>Schema<span>::</span>create('tasks', function(Blueprint $table) </span></span><span> <span>{ </span></span><span> <span>$table->increments('id'); </span></span><span> </span><span> <span>$table->string('name'); </span></span><span> <span>$table->boolean('status'); </span></span><span> </span><span> <span>$table->integer('user_id')->unsigned(); </span></span><span> </span><span> <span>$table->timestamps(); </span></span><span> </span><span> <span>$table->index('user_id'); </span></span><span> <span>}); </span></span><span> <span>} </span></span><span> </span><span> <span>/** </span></span><span><span> * Reverse the migrations. </span></span><span><span> * </span></span><span><span> * <span>@return <span>void</span> </span></span></span><span><span> */ </span></span><span> <span>public function down() </span></span><span> <span>{ </span></span><span> <span>Schema<span>::</span>dropIfExists('users'); </span></span><span> <span>Schema<span>::</span>dropIfExists('tasks'); </span></span><span> <span>} </span></span><span> </span><span> <span>}</span></span>
akan mempunyai kesan yang sama seperti
<span><span><?php </span></span><span> </span><span> <span>use Illuminate<span>\Auth\UserTrait</span>; </span></span><span> <span>use Illuminate<span>\Auth\UserInterface</span>; </span></span><span> <span>use Illuminate<span>\Auth\Reminders\RemindableTrait</span>; </span></span><span> <span>use Illuminate<span>\Auth\Reminders\RemindableInterface</span>; </span></span><span> </span><span> <span>class User extends Eloquent implements UserInterface, RemindableInterface { </span></span><span> </span><span> <span>use UserTrait, RemindableTrait; </span></span><span> </span><span> <span>/** </span></span><span><span> * The database table used by the model. </span></span><span><span> * </span></span><span><span> * <span>@var <span>string</span> </span></span></span><span><span> */ </span></span><span> <span>protected $table = 'users'; </span></span><span> </span><span> <span>/** </span></span><span><span> * The attributes excluded from the model's JSON form. </span></span><span><span> * </span></span><span><span> * <span>@var <span>array</span> </span></span></span><span><span> */ </span></span><span> <span>protected $hidden = array('password', 'remember_token'); </span></span><span> </span><span> <span>public function tasks() </span></span><span> <span>{ </span></span><span> <span>return $this->hasMany('Task'); </span></span><span> <span>} </span></span><span> </span><span> <span>}</span></span>
dari tiga baris kami hanya turun hingga tujuh untuk prosedur pendaftaran keseluruhan.
Untuk menggunakan ciri ini, anda perlu mengaktifkannya. Hanya menukar $ autohydrateentityFrominput dalam model anda untuk benar, seperti ini:
<span><span><?php </span></span><span> </span><span> <span>class Task extends <span>\Eloquent</span> { </span></span><span> <span>protected $fillable = []; </span></span><span> </span><span> <span>public function user() </span></span><span> <span>{ </span></span><span> <span>return $this->belongsTo('User'); </span></span><span> <span>} </span></span><span> <span>}</span></span>
selesai!
anda juga akan sering mempunyai beberapa data berlebihan yang anda tidak perlukan untuk logik perniagaan. Fikirkan tentang bidang _confirmation atau token CSRF. Nah, kita boleh membuangnya dengan harta $ AutopurgeredundantTributes model. Seperti dahulu, hanya beralih ke benar.
<span>{ </span> <span>"require": { </span> <span>"laravelbook/ardent": "2.*" </span> <span>} </span> <span>}</span>
sekarang prosedurnya lebih bersih daripada sebelumnya.
Satu lagi ciri yang baik yang patut disebut ialah pengenalan cangkuk model. Mereka pada dasarnya, senarai kaedah yang, jika dilaksanakan, dipanggil dalam momen pelaksanaan tertentu. Oleh itu, untuk membuat contoh, kaedah afterupdate () akan dipanggil sebelum setiap kemas kini () panggilan. Kaedah beforevalidate () akan dipanggil sebelum setiap pengesahan, dan sebagainya.
Berikut adalah senarai semua kaedah ini:
Contoh klasik boleh menjadi beberapa penghuraian data sebelum prosedur simpan. Seperti ini:
php artisan migrate:make todo_setup
Setiap kaedah "sebelum" mempunyai nilai pulangan Boolean. Jika benar, operasi berikut dilaksanakan secara normal. Sekiranya kaedah itu kembali palsu, operasi akan dihentikan. Dalam kaedah di atas, kami menjana slug (dan mengisi medan yang betul) dengan kaedah beforesave (), selepas pengesahan.
Terdapat juga tip khusus mengenai Beforesave () dan aftersave (): anda boleh mengisytiharkannya pada masa yang berlalu. Lihat:
<span><span><?php </span></span><span> </span><span> <span>use Illuminate<span>\Database\Schema\Blueprint</span>; </span></span><span> <span>use Illuminate<span>\Database\Migrations\Migration</span>; </span></span><span> </span><span> <span>class TodoSetup extends Migration { </span></span><span> </span><span> <span>/** </span></span><span><span> * Run the migrations. </span></span><span><span> * </span></span><span><span> * <span>@return <span>void</span> </span></span></span><span><span> */ </span></span><span> <span>public function up() </span></span><span> <span>{ </span></span><span> <span>Schema<span>::</span>create('users', function(Blueprint $table) </span></span><span> <span>{ </span></span><span> <span>$table->increments('id')->unsigned(); </span></span><span> </span><span> <span>$table->string('first_name'); </span></span><span> <span>$table->string('last_name'); </span></span><span> <span>$table->string('email'); </span></span><span> <span>$table->string('password', 60); </span></span><span> </span><span> <span>$table->timestamps(); </span></span><span> <span>}); </span></span><span> </span><span> <span>Schema<span>::</span>create('tasks', function(Blueprint $table) </span></span><span> <span>{ </span></span><span> <span>$table->increments('id'); </span></span><span> </span><span> <span>$table->string('name'); </span></span><span> <span>$table->boolean('status'); </span></span><span> </span><span> <span>$table->integer('user_id')->unsigned(); </span></span><span> </span><span> <span>$table->timestamps(); </span></span><span> </span><span> <span>$table->index('user_id'); </span></span><span> <span>}); </span></span><span> <span>} </span></span><span> </span><span> <span>/** </span></span><span><span> * Reverse the migrations. </span></span><span><span> * </span></span><span><span> * <span>@return <span>void</span> </span></span></span><span><span> */ </span></span><span> <span>public function down() </span></span><span> <span>{ </span></span><span> <span>Schema<span>::</span>dropIfExists('users'); </span></span><span> <span>Schema<span>::</span>dropIfExists('tasks'); </span></span><span> <span>} </span></span><span> </span><span> <span>}</span></span>
mari kita fikirkan beberapa kemungkinan penggunaan kaedah ini dalam aplikasi kami.
mungkin beforesave () untuk menangani hashing kata laluan?
<span><span><?php </span></span><span> </span><span> <span>use Illuminate<span>\Auth\UserTrait</span>; </span></span><span> <span>use Illuminate<span>\Auth\UserInterface</span>; </span></span><span> <span>use Illuminate<span>\Auth\Reminders\RemindableTrait</span>; </span></span><span> <span>use Illuminate<span>\Auth\Reminders\RemindableInterface</span>; </span></span><span> </span><span> <span>class User extends Eloquent implements UserInterface, RemindableInterface { </span></span><span> </span><span> <span>use UserTrait, RemindableTrait; </span></span><span> </span><span> <span>/** </span></span><span><span> * The database table used by the model. </span></span><span><span> * </span></span><span><span> * <span>@var <span>string</span> </span></span></span><span><span> */ </span></span><span> <span>protected $table = 'users'; </span></span><span> </span><span> <span>/** </span></span><span><span> * The attributes excluded from the model's JSON form. </span></span><span><span> * </span></span><span><span> * <span>@var <span>array</span> </span></span></span><span><span> */ </span></span><span> <span>protected $hidden = array('password', 'remember_token'); </span></span><span> </span><span> <span>public function tasks() </span></span><span> <span>{ </span></span><span> <span>return $this->hasMany('Task'); </span></span><span> <span>} </span></span><span> </span><span> <span>}</span></span>
atau cangkuk pembersihan tepat sebelum pengguna memadam prosedur?
<span><span><?php </span></span><span> </span><span> <span>class Task extends <span>\Eloquent</span> { </span></span><span> <span>protected $fillable = []; </span></span><span> </span><span> <span>public function user() </span></span><span> <span>{ </span></span><span> <span>return $this->belongsTo('User'); </span></span><span> <span>} </span></span><span> <span>}</span></span>
Terdapat banyak kemungkinan.
dengan bersemangat, anda juga boleh menentukan hubungan dengan cara yang lebih pendek daripada sebelumnya. Mari kita lihat bagaimana kita sebenarnya menentukan hubungan kita antara model: Contoh berikut menunjukkan kaedah tugas () dalam model pengguna.
<span>{ </span> <span>"require": { </span> <span>"laravelbook/ardent": "2.*" </span> <span>} </span> <span>}</span>
menggunakan semangat untuk menentukan hubungan bermaksud menentukan array mudah, yang dipanggil $ hubungan.
<span><span><?php </span></span><span> <span>class User extends <span>\LaravelBook\Ardent\Ardent</span> { </span></span><span> <span>// model code here! </span></span><span> <span>}</span></span>
Ini mempunyai kesan yang sama. Ardent menggunakan konvensyen penamaan yang sama untuk mengikat nama dan kaedah, tanpa perlu menulis satu demi satu.
<span><span><?php </span></span><span> </span><span> <span>public function postSignup() </span></span><span> <span>{ </span></span><span> <span>$rules = array( </span></span><span> <span>'first_name' => 'required', </span></span><span> <span>'last_name' => 'required', </span></span><span> <span>'email' => 'required|email|unique:users', </span></span><span> <span>'password' => 'required|min:8' </span></span><span> <span>); </span></span><span> </span><span> <span>$messages = array( </span></span><span> <span>'first_name.required' => 'First name is required.', </span></span><span> <span>'last_name.required' => 'Last name is required.', </span></span><span> <span>'email.required' => 'Email is required.', </span></span><span> <span>'password.required' => 'Password is required.', </span></span><span> </span><span> <span>'email.email' => 'Use a real email address!', </span></span><span> <span>'email.unique' => 'This email address already exists!', </span></span><span> <span>'password.min' => 'Password must be at least 8 character long.' </span></span><span> <span>); </span></span><span> </span><span> <span>$validator = Validator<span>::</span>make(Input<span>::</span>all(), $rules, $messages); </span></span><span> </span><span> <span>if($validator->fails()) </span></span><span> <span>{ </span></span><span> <span>return Redirect<span>::</span>to('user/signup')->with('errors', $validator->messages()); </span></span><span> <span>} </span></span><span> </span><span> <span>$user = new User; </span></span><span> </span><span> <span>$user->first_name = Input<span>::</span>get('first_name'); </span></span><span> <span>$user->last_name = Input<span>::</span>get('last_name'); </span></span><span> <span>$user->email = Input<span>::</span>get('email'); </span></span><span> <span>$user->password = Hash<span>::</span>make(Input<span>::</span>get('password')); </span></span><span> </span><span> <span>if($user->save()) </span></span><span> <span>{ </span></span><span> <span>$status = 1; </span></span><span> <span>} </span></span><span> <span>else </span></span><span> <span>{ </span></span><span> <span>$status = 0; </span></span><span> <span>} </span></span><span> </span><span> <span>return Redirect<span>::</span>to('user/signup')->with('status', $status); </span></span><span> <span>}</span></span>
Atas ialah kandungan terperinci Ardent: Model Laravel pada steroid. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!