Kumpulan kelas Model yang memungkinkan Anda mendapatkan data langsung dari database WordPress.
Corcel adalah kumpulan kelas PHP yang dibangun di atas Eloquent ORM (dari kerangka Laravel), yang menyediakan antarmuka yang lancar untuk terhubung dan mendapatkan data langsung dari database WordPress.
Anda dapat menggunakan WordPress sebagai backend (panel administrasi) atau CMS, untuk memasukkan posting, tipe khusus, dll, dan aplikasi PHP lainnya di sisi lain yang menanyakan data tersebut (sebagai lapisan Model). Lebih mudah menggunakan Corcel dengan Laravel, tetapi Anda bebas menggunakannya dengan proyek PHP apa pun yang menggunakan Composer.
Belikan aku Kopi | Ikuti Corcel di Twitter
Laravel | Corcel |
---|---|
5.1.x | ~2.1.0 |
5.2.x | ~2.2.0 |
5.3.x | ~2.3.0 |
5.4.x | ~2.4.0 |
5.5.x | ~2.5.0 |
5.6.x | ~2.6.0 |
5.7.x | ~2.7.0 |
5.8.x | ~2.8.0 |
6.0.x | ^3.0.0 |
7.0.x | ^4.0.0 |
8.0.x | ^5.0.0 |
9.0.x | ^6.0.0 |
10.0.x | ^7.0.0 |
11.0.x | ^8.0.0 |
Anda perlu menggunakan Komposer untuk menginstal Corcel ke dalam proyek Anda:
composer require jgrossi/corcel
Corcel akan mendaftarkan dirinya menggunakan Auto Discovery Laravel.
Anda harus memasukkan CorcelServiceProvider
di config/app.php
Anda:
' providers ' => [
/*
* Package Service Providers...
*/
Corcel Laravel CorcelServiceProvider::class,
]
Sekarang konfigurasikan file konfigurasi kami untuk memastikan database Anda diatur dengan benar dan memungkinkan Anda mendaftarkan jenis posting khusus dan kode pendek dengan cara yang sangat mudah:
Jalankan perintah Artisan berikut di terminal Anda:
php artisan vendor:publish --provider="CorcelLaravelCorcelServiceProvider"
Sekarang Anda memiliki file konfigurasi config/corcel.php
, tempat Anda dapat mengatur koneksi database dengan tabel WordPress dan banyak lagi.
Cukup atur connection
database yang ingin digunakan Corcel di config/corcel.php
.
Misalkan Anda memiliki koneksi database berikut di file config/database.php
Anda:
// File: /config/database.php
' connections ' => [
' mysql ' => [ // for Laravel database
' driver ' => ' mysql ' ,
' host ' => ' localhost ' ,
' database ' => ' mydatabase ' ,
' username ' => ' admin '
'password' => 'secret',
' charset ' => ' utf8 ' ,
' collation ' => ' utf8_unicode_ci ' ,
' prefix ' => '' ,
' strict ' => false ,
' engine ' => null ,
],
' wordpress ' => [ // for WordPress database (used by Corcel)
' driver ' => ' mysql ' ,
' host ' => ' localhost ' ,
' database ' => ' mydatabase ' ,
' username ' => ' admin ' ,
' password ' => ' secret ' ,
' charset ' => ' utf8 ' ,
' collation ' => ' utf8_unicode_ci ' ,
' prefix ' => ' wp_ ' ,
' strict ' => false ,
' engine ' => null ,
],
],
Dalam hal ini Anda sebaiknya ingin menggunakan koneksi wordpress
untuk Corcel, jadi setel saja ke file konfigurasi Corcel config/corcel.php
:
' connection ' => ' wordpress ' ,
Di sini Anda harus mengkonfigurasi database agar sesuai dengan persyaratan Corcel. Pertama, Anda harus menyertakan file autoload
Composer jika belum dimuat:
require __DIR__ . ' /vendor/autoload.php ' ;
Sekarang Anda harus mengatur parameter database WordPress Anda:
$ params = [
' database ' => ' database_name ' ,
' username ' => ' username ' ,
' password ' => ' pa$$word ' ,
' prefix ' => ' wp_ ' // default prefix is 'wp_', you can change to your own prefix
];
Corcel Database:: connect ( $ params );
Anda dapat menentukan semua parameter Eloquent, namun ada pula yang default (tetapi Anda dapat menggantinya).
' driver ' => ' mysql ' ,
' host ' => ' localhost ' ,
' charset ' => ' utf8 ' ,
' collation ' => ' utf8_unicode_ci ' ,
' prefix ' => ' wp_ ' , // Specify the prefix for WordPress tables, default prefix is 'wp_'
Setiap kali Anda melihat
Post::method()
, jika Anda menggunakan kelas Post Anda sendiri (tempat Anda mengatur nama koneksi), sepertiAppPost
Anda harus menggunakanAppPost::method()
dan bukanPost::method()
. Semua contoh mengasumsikan Anda sudah mengetahui perbedaan ini.
Dalam contoh, setiap kali Anda melihat
Post::method()
asumsikanCorcelModelPost::method()
.
// All published posts
$ posts = Post:: published ()-> get ();
$ posts = Post:: status ( ' publish ' )-> get ();
// A specific post
$ post = Post:: find ( 31 );
echo $ post -> post_title ;
Secara opsional, Anda dapat membuat model Post
Anda sendiri (atau Halaman, atau apa pun) yang memperluas CorcelPost
. Kemudian atur nama koneksi (jika Anda ingin mengganti nama default Corcel) yang Anda gunakan, dalam hal ini foo-bar
:
Memperluas kelas
CorcelModelPost
dapat menambah fleksibilitas pada proyek Anda, setelah Anda dapat menambahkan metode dan logika khusus, sesuai dengan apa yang perlu Anda gunakan dari database WordPress Anda.
<?php // File: app/Post.php
namespace App ;
use Corcel Model Post as Corcel ;
class Post extends Corcel
{
protected $ connection = ' foo-bar ' ;
public function customMethod () {
//
}
}
Jadi, sekarang Anda bisa mengambil data database WP menggunakan kelas Anda sendiri:
$ posts = App Post:: all (); // using the 'foo-bar' connection
Ingatlah bahwa Anda tidak perlu memperluas kelas
Post
kami, Anda dapat menggunakanCorcelModelPost
dan semua model lainnya tanpa masalah.
CATATAN: Di Corcel v1 Anda dapat menyimpan meta data menggunakan metode
Post::save()
. Itu tidak diperbolehkan lagi. Gunakan metodesaveMeta()
ataucreateMeta()
(lihat di bawah) untuk menyimpan meta postingan.
Anda juga dapat mengambil data meta dari postingan.
// Get a custom meta value (like 'link' or whatever) from a post (any type)
$ post = Post:: find ( 31 );
echo $ post -> meta -> link ; // OR
echo $ post -> fields -> link ;
echo $ post -> link ; // OR
Untuk membuat atau memperbarui meta data dari Pengguna cukup gunakan metode saveMeta()
atau saveField()
. Mereka mengembalikan bool
seperti metode Eloquent save()
.
$ post = Post:: find ( 1 );
$ post -> saveMeta ( ' username ' , ' jgrossi ' );
Anda juga dapat menyimpan banyak data meta secara bersamaan:
$ post = Post:: find ( 1 );
$ post -> saveMeta ([
' username ' => ' jgrossi ' ,
' url ' => ' http://jgrossi.com ' ,
]);
Anda juga memiliki metode createMeta()
dan createField()
, yang berfungsi seperti metode saveX()
, namun metode tersebut hanya digunakan untuk pembuatan dan mengembalikan instance yang dibuat PostMeta
, bukan bool
.
$ post = Post:: find ( 1 );
$ postMeta = $ post -> createMeta ( ' foo ' , ' bar ' ); // instance of PostMeta class
$ trueOrFalse = $ post -> saveMeta ( ' foo ' , ' baz ' ); // boolean
Ada beberapa kemungkinan untuk menanyakan postingan berdasarkan bidang khusus (meta) dengan menggunakan cakupan pada kelas Post
(atau model lain lainnya yang menggunakan sifat HasMetaFields
):
Untuk memeriksa apakah kunci meta ada, gunakan cakupan hasMeta()
:
// Finds a published post with a meta flag.
$post = Post::published()->hasMeta('featured_article')->first();
Jika Anda ingin mencocokkan bidang meta dengan tepat, Anda dapat menggunakan cakupan hasMeta()
dengan sebuah nilai.
// Find a published post which matches both meta_key and meta_value.
$ post = Post:: published ()-> hasMeta ( ' username ' , ' jgrossi ' )-> first ();
Jika Anda perlu mencocokkan beberapa bidang meta, Anda juga dapat menggunakan cakupan hasMeta()
yang meneruskan array sebagai parameter:
$ post = Post:: hasMeta ([ ' username ' => ' jgrossi ' ])-> first ();
$ post = Post:: hasMeta ([ ' username ' => ' jgrossi ' , ' url ' => ' jgrossi.com ' ])-> first ();
// Or just passing the keys
$ post = Post:: hasMeta ([ ' username ' , ' url ' ])-> first ();
Jika Anda perlu mencocokkan string yang tidak peka huruf besar/kecil, atau mencocokkan dengan karakter pengganti, Anda dapat menggunakan cakupan hasMetaLike()
dengan sebuah nilai. Ini menggunakan operator SQL LIKE
, jadi gunakan '%' sebagai operator wildcard.
// Will match: 'J Grossi', 'J GROSSI', and 'j grossi'.
$ post = Post:: published ()-> hasMetaLike ( ' author ' , ' J GROSSI ' )-> first ();
// Using % as a wildcard will match: 'J Grossi', 'J GROSSI', 'j grossi', 'Junior Grossi' etc.
$ post = Post:: published ()-> hasMetaLike ( ' author ' , ' J%GROSSI ' )-> first ();
Kelas Post
memiliki dukungan untuk "alias", jadi jika Anda memeriksa kelas Post
Anda harus mencatat beberapa alias yang didefinisikan dalam array $aliases
statis, seperti title
untuk post_title
dan content
untuk post_content
.
$ post = Post:: find ( 1 );
$ post -> title === $ post -> post_title ; // true
Jika Anda memperluas kelas Post
untuk membuat kelas Anda sendiri, Anda juga dapat menggunakan $aliases
. Cukup tambahkan alias baru ke properti statis di dalam kelas Anda sendiri dan secara otomatis akan mewarisi semua alias dari kelas induk Post
:
class A extends Corcel Post
{
protected static $ aliases = [
' foo ' => ' post_foo ' ,
];
}
$ a = A:: find ( 1 );
echo $ a -> foo ;
echo $ a -> title ; // from Post class
Untuk mengurutkan postingan, Anda dapat menggunakan cakupan newest()
dan oldest()
, untuk kelas Post
dan User
:
$ newest = Post:: newest ()-> first ();
$ oldest = Post:: oldest ()-> first ();
Untuk memesan posting cukup gunakan metode Eloquent paginate()
:
$ posts = Post:: published ()-> paginate ( 5 );
foreach ( $ posts as $ post ) {
// ...
}
Untuk menampilkan link penomoran halaman, panggil saja metode links()
:
{{ $ posts -> links () }}
Jika Anda ingin mengambil kolom kustom yang dibuat oleh plugin Advanced Custom Fields (ACF), Anda harus menginstal plugin corcel/acf
- klik di sini untuk informasi lebih lanjut - dan panggil kolom kustom seperti ini:
$ post = Post:: find ( 123 );
echo $ post -> acf -> some_radio_field ;
$ repeaterFields = $ post -> acf -> my_repeater_name ;
Untuk menghindari pertanyaan SQL yang tidak perlu, cukup atur jenis bidang yang Anda minta. Biasanya dua kueri SQL diperlukan untuk mendapatkan tipe bidang, jadi jika Anda ingin menentukannya, Anda melewatkan kueri tambahan tersebut:
$ post = Post:: find ( 123 );
echo $ post -> acf -> text ( ' text_field_name ' );
echo $ post -> acf -> boolean ( ' boolean_field_name ' );
Anda juga dapat bekerja dengan jenis posting khusus. Anda dapat menggunakan metode type(string)
atau membuat kelas Anda sendiri.
// using type() method
$ videos = Post:: type ( ' video ' )-> status ( ' publish ' )-> get ();
// using your own class
class Video extends Corcel Post
{
protected $ postType = ' video ' ;
}
$ videos = Video:: status ( ' publish ' )-> get ();
Menggunakan metode type()
akan membuat Corcel mengembalikan semua objek sebagai CorcelPost
. Dengan menggunakan kelas khusus, Anda memiliki keuntungan untuk menyesuaikan kelas, termasuk metode dan properti khusus, mengembalikan semua objek sebagai Video
, misalnya.
Jenis posting khusus dan data meta:
// Get 3 posts with custom post type (store) and show its address
$ stores = Post:: type ( ' store ' )-> status ( ' publish ' )-> take ( 3 )-> get ();
foreach ( $ stores as $ store ) {
$ storeAddress = $ store -> address ; // option 1
$ storeAddress = $ store -> meta -> address ; // option 2
$ storeAddress = $ store -> fields -> address ; // option 3
}
Setiap kali Anda memanggil sesuatu seperti Post::type('video)->first()
atau Video::first()
Anda menerima instance CorcelModelPost
.
Jika Anda memilih untuk membuat kelas baru untuk jenis kiriman khusus Anda, Anda dapat mengembalikan kelas ini untuk semua contoh jenis kiriman tersebut.
Daripada memanggil metode Post::registerPostType()
untuk semua jenis kiriman khusus yang ingin Anda daftarkan, cukup gunakan file konfigurasi Corcel dan petakan semua kiriman khusus dan kelasnya. Mereka akan didaftarkan secara otomatis untuk Anda:
' post_types ' => [
' video ' => App Video::class,
' foo ' => App Foo::class,
]
Jadi setiap kali Anda menanyakan jenis posting khusus, instance yang dipetakan akan dikembalikan.
Hal ini sangat berguna ketika Anda ingin mendapatkan Kumpulan Postingan dari berbagai jenis (misalnya saat mengambil postingan yang ditentukan dalam menu).
//all objects in the $videos Collection will be instances of Post
$ videos = Post:: type ( ' video ' )-> status ( ' publish ' )-> get ();
// register the video custom post type and its particular class
Post:: registerPostType ( ' video ' , ' AppVideo ' )
//now all objects in the $videos Collection will be instances of Video
$ videos = Post:: type ( ' video ' )-> status ( ' publish ' )-> get ();
Anda juga dapat melakukan ini untuk kelas bawaan, seperti Halaman atau Posting. Cukup daftarkan kelas Halaman atau Posting dengan string jenis posting terkait, dan objek tersebut akan dikembalikan, bukan yang default.
Anda dapat memetakan semua kode pendek yang Anda inginkan di dalam file config/corcel.php
, di bawah kunci 'shortcodes'
. Dalam hal ini Anda harus membuat kelas Anda sendiri yang implements
antarmuka CorcelShortcode
, yang memerlukan metode render()
:
' shortcodes ' => [
' foo ' => App Shortcodes FooShortcode::class,
' bar ' => App Shortcodes BarShortcode::class,
],
Ini adalah contoh kelas kode pendek:
class FakeShortcode implements Corcel Shortcode
{
/**
* @param ShortcodeInterface $shortcode
* @return string
*/
public function render ( ShortcodeInterface $ shortcode )
{
return sprintf (
' html-for-shortcode-%s-%s ' ,
$ shortcode -> getName (),
$ shortcode -> getParameter ( ' one ' )
);
}
}
Anda dapat menambahkan shortcode dengan memanggil metode addShortcode
pada model Post
:
// [gallery id="1"]
Post:: addShortcode ( ' gallery ' , function ( $ shortcode ) {
return $ shortcode -> getName () . ' . ' . $ shortcode -> getParameter ( ' id ' );
});
$ post = Post:: find ( 1 );
echo $ post -> content ;
Laravel 5.5 menggunakan Package Auto-Discovery, sehingga tidak mengharuskan Anda menambahkan ServiceProvider secara manual
Jika Anda menggunakan Laravel, kami sarankan untuk menambahkan penangan kode pendek Anda di AppProvidersAppServiceProvider
, dalam metode boot
.
Kode pendek diurai dengan perpustakaan thunderer/kode pendek .
Beberapa parser berbeda disediakan. RegularParser
adalah yang paling benar secara teknis dan disediakan secara default. Ini cocok untuk sebagian besar kasus. Namun jika Anda menemukan beberapa kejanggalan dalam penguraian kode pendek, Anda mungkin perlu mengkonfigurasi Corcel untuk menggunakan WordpressParser
, yang lebih cocok dengan regex kode pendek WordPress. Untuk melakukan ini, jika Anda menggunakan Laravel, edit file config/corcel.php
, dan hapus komentar pada parser pilihan Anda. Alternatifnya, Anda dapat menggantinya dengan parser Anda sendiri.
' shortcode_parser ' => Thunder Shortcode Parser RegularParser::class,
// 'shortcode_parser' => ThunderShortcodeParserWordpressParser::class,
Jika Anda tidak menggunakan Laravel, Anda dapat melakukan ini saat runtime, memanggil metode setShortcodeParser()
dari kelas mana pun yang menggunakan sifat Shortcodes
, seperti Post
, misalnya.
$ post -> setShortcodeParser ( new WordpressParser ());
echo $ post -> content ; // content parsed with "WordpressParser" class
Untuk informasi lebih lanjut tentang paket kode pendek, klik di sini.
Anda bisa mendapatkan taksonomi untuk postingan tertentu seperti:
$ post = Post:: find ( 1 );
$ taxonomy = $ post -> taxonomies ()-> first ();
echo $ taxonomy -> taxonomy ;
Atau Anda dapat mencari postingan menggunakan taksonominya:
$ post = Post:: taxonomy ( ' category ' , ' php ' )-> first ();
Anda juga bisa mendapatkan format postingan, seperti fungsi WordPress get_post_format()
:
echo $ post -> getFormat (); // should return something like 'video', etc
Halaman seperti jenis posting khusus. Anda dapat menggunakan kelas Post::type('page')
atau CorcelModelPage
.
use Corcel Model Page ;
// Find a page by slug
$ page = Page:: slug ( ' about ' )-> first (); // OR
$ page = Post:: type ( ' page ' )-> slug ( ' about ' )-> first ();
echo $ page -> post_title ;
Dapatkan kategori atau taksonomi atau muat postingan dari kategori tertentu. Ada banyak cara untuk mencapainya.
// all categories
$ cat = Taxonomy:: category ()-> slug ( ' uncategorized ' )-> posts -> first ();
echo " <pre> " ; print_r ( $ cat -> name ); echo " </pre> " ;
// only all categories and posts connected with it
$ cat = Taxonomy:: where ( ' taxonomy ' , ' category ' )-> with ( ' posts ' )-> get ();
$ cat -> each ( function ( $ category ) {
echo $ category -> name ;
});
// clean and simple all posts from a category
$ cat = Category:: slug ( ' uncategorized ' )-> posts -> first ();
$ cat -> posts -> each ( function ( $ post ) {
echo $ post -> post_title ;
});
Mendapatkan lampiran dan/atau revisi dari Post
atau Page
.
$ page = Page:: slug ( ' about ' )-> with ( ' attachment ' )-> first ();
// get feature image from page or post
print_r ( $ page -> attachment );
$ post = Post:: slug ( ' test ' )-> with ( ' revision ' )-> first ();
// get all revisions from a post or page
print_r ( $ post -> revision );
Mendapatkan thumbnail untuk Post
atau Page
.
$ post = Post:: find ( 1 );
// Retrieve an instance of CorcelModelMetaThumbnailMeta.
print_r ( $ post -> thumbnail );
// For convenience you may also echo the thumbnail instance to get the URL of the original image.
echo $ post -> thumbnail ;
Untuk mengambil ukuran thumbnail tertentu, Anda dapat memanggil metode ->size()
pada objek thumbnail dan meneruskan parameter string ukuran thumbnail (misalnya thumbnail
atau medium
). Jika thumbnail telah dibuat, metode ini akan mengembalikan array metadata gambar, jika tidak, URL gambar asli akan dikembalikan sebagai cadangan.
if ( $ post -> thumbnail !== null ) {
/**
* [
* 'file' => 'filename-300x300.jpg',
* 'width' => 300,
* 'height' => 300,
* 'mime-type' => 'image/jpeg',
* 'url' => 'http://localhost/wp-content/uploads/filename-300x300.jpg',
* ]
*/
print_r ( $ post -> thumbnail -> size ( Corcel Model Meta ThumbnailMeta:: SIZE_THUMBNAIL ));
// http://localhost/wp-content/uploads/filename.jpg
print_r ( $ post -> thumbnail -> size ( ' invalid_size ' ));
}
Dalam versi Corcel sebelumnya, kelas ini disebut
Options
bukanOption
(tunggal). Jadi berhati-hatilah untuk selalu menggunakan kelas ini dalam bentuk tunggal mulai dariv2.0.0
.
Metode
Option::getAll()
telah dihapus di Corcel 2+, demiOption::asArray($keys [])
.
Anda dapat menggunakan kelas Option
untuk mendapatkan data dari tabel wp_options
:
$ siteUrl = Option:: get ( ' siteurl ' );
Anda juga dapat menambahkan opsi baru:
Option:: add ( ' foo ' , ' bar ' ); // stored as string
Option:: add ( ' baz ' , [ ' one ' => ' two ' ]); // this will be serialized and saved
Anda bisa mendapatkan semua opsi dalam array sederhana:
$ options = Option:: asArray ();
echo $ options [ ' siteurl ' ];
Atau Anda hanya dapat menentukan kunci yang ingin Anda dapatkan:
$ options = Option:: asArray ([ ' siteurl ' , ' home ' , ' blogname ' ]);
echo $ options [ ' home ' ];
Untuk mendapatkan menu berdasarkan slugnya, gunakan sintaks di bawah ini. Item menu akan dimuat dalam variabel items
(ini adalah kumpulan objek CorcelModelMenuItem
).
Item menu yang saat ini didukung adalah: Halaman, Posting, Tautan Khusus, dan Kategori.
Setelah Anda memiliki instance kelas MenuItem
, jika Anda ingin menggunakan instance asli (seperti Halaman atau Term asli, misalnya), panggil saja metode MenuItem::instance()
. Objek MenuItem
hanyalah sebuah postingan dengan post_type
sama dengan nav_menu_item
:
$ menu = Menu:: slug ( ' primary ' )-> first ();
foreach ( $ menu -> items as $ item ) {
echo $ item -> instance ()-> title ; // if it's a Post
echo $ item -> instance ()-> name ; // if it's a Term
echo $ item -> instance ()-> link_text ; // if it's a custom link
}
Metode instance()
akan mengembalikan objek yang cocok:
Post
contoh untuk item menu post
;Page
untuk item menu page
;CustomLink
untuk item menu custom
;Term
untuk item menu category
.Untuk menangani menu multi-level, ulangi semua item menu untuk menempatkannya pada level yang tepat, misalnya.
Anda dapat menggunakan metode MenuItem::parent()
untuk mengambil instance induk dari item menu tersebut:
$ items = Menu:: slug ( ' foo ' )-> first ()-> items ;
$ parent = $ items -> first ()-> parent (); // Post, Page, CustomLink or Term (category)
Untuk mengelompokkan item menu menurut induknya, Anda dapat menggunakan metode ->groupBy()
dalam koleksi $menu->items
, mengelompokkan item menu berdasarkan $item->parent()->ID
.
Untuk membaca lebih lanjut tentang metode groupBy()
lihat dokumentasi Laravel.
Anda dapat memanipulasi pengguna dengan cara yang sama seperti Anda menangani postingan:
// All users
$ users = User:: get ();
// A specific user
$ user = User:: find ( 1 );
echo $ user -> user_login ;
Jika Anda menggunakan Laravel 5.4 atau lebih lama, pastikan Anda telah mendaftarkan penyedia CorcelServiceProvider
.
Dan kemudian, tentukan penyedia pengguna di config/auth.php
untuk mengizinkan Laravel login dengan pengguna WordPress:
' providers ' => [
' users ' => [
' driver ' => ' corcel ' ,
' model ' => Corcel Model User::class,
],
],
Sekarang Anda dapat menggunakan fasad Auth
untuk mengautentikasi pengguna:
Auth:: validate ([
' email ' => ' [email protected] ' , // or using 'username' too
' password ' => ' secret ' ,
]);
Agar Reset Kata Sandi Laravel berfungsi dengan Corcel, kita harus mengganti cara kata sandi disimpan dalam database. Untuk melakukan ini, Anda harus mengubah Auth/PasswordController.php
dari:
use App Http Controllers Controller ;
use Illuminate Foundation Auth ResetsPasswords ;
class PasswordController extends Controller
{
use ResetsPasswords;
ke
use App Http Controllers Controller ;
use Illuminate Foundation Auth ResetsPasswords ;
use Corcel Laravel Auth ResetsPasswords as CorcelResetsPasswords ;
class PasswordController extends Controller
{
use ResetsPasswords, CorcelResetsPasswords {
CorcelResetsPasswords::resetPassword insteadof ResetsPasswords;
}
Anda dapat menggunakan kelas AuthUserProvider
untuk mengautentikasi pengguna secara manual :
$ userProvider = new Corcel Laravel Auth AuthUserProvider ;
$ user = $ userProvider -> retrieveByCredentials ([ ' username ' => ' admin ' ]);
if (! is_null ( $ user ) && $ userProvider -> validateCredentials ( $ user , [ ' password ' => ' admin ' ])) {
// successfully login
}
Ingat Anda dapat menggunakan
username
dan
Untuk menjalankan tes phpunit, jalankan perintah berikut:
./vendor/bin/phpunit
Jika Anda sudah menginstal perintah global phpunit
, Anda cukup mengetik:
phpunit
Semua tes ditulis menggunakan Sqlite dengan database :memory
, sehingga berjalan di memori Anda. Semua pengujian menggunakan factories
dan migrations
. Lihat direktori tests/database/factories
dan tests/database/migrations
untuk informasi lebih lanjut.
Semua kontribusi dipersilakan untuk membantu meningkatkan Corcel.
Sebelum Anda mengirimkan Pull Request (PR) Anda, pertimbangkan panduan berikut:
Garpu https://github.com/corcel/corcel di Github;
Kloning repositori bercabang Anda (bukan Corcel) secara lokal dan buat cabang Anda sendiri berdasarkan versi yang ingin Anda perbaiki ( 2.1
, 2.2
, 2.3
, 2.4
atau 2.5
): git checkout -b my-fix-branch 2.5
;
Buat semua perubahan kode. Ingatlah di sini untuk menulis setidaknya satu kasus uji untuk fitur apa pun yang Anda tambahkan atau perbaikan bug apa pun (jika belum diuji). Tujuan kami adalah agar 100% kode tercakup dalam pengujian, jadi bantu kami menulis kode yang lebih baik ;-) Jika Anda tidak memiliki pengalaman dengan pengujian, ini adalah kesempatan bagus untuk belajar. Lihat saja kasus pengujian kami dan Anda akan melihat betapa sederhananya pengujian tersebut.
Jalankan pengujian unit secara lokal untuk memastikan perubahan Anda tidak merusak bagian kode lainnya;
Dorong cabang baru Anda ke repositori bercabang Anda, biasanya git push origin HEAD
akan berfungsi;
Di GitHub lagi, buat Permintaan Tarik (PR) dari cabang my-fix-branch
khusus Anda (dari repositori bercabang Anda) ke cabang terkait ( corcel:2.5
, misalnya, bukan corcel:master
;
Tunggu persetujuannya :-)
Lisensi MIT © Junior Grossi