Eine Sammlung von Modellklassen, mit denen Sie Daten direkt aus einer WordPress-Datenbank abrufen können.
Corcel ist eine Sammlung von PHP-Klassen, die auf Eloquent ORM (vom Laravel-Framework) basieren und eine flüssige Schnittstelle zum direkten Verbinden und Abrufen von Daten aus einer WordPress-Datenbank bieten.
Sie können WordPress als Backend (Administrationsbereich) oder CMS verwenden, um Beiträge, benutzerdefinierte Typen usw. einzufügen, und jede andere PHP-App auf der anderen Seite, die diese Daten abfragt (als Modellebene). Es ist einfacher, Corcel mit Laravel zu verwenden, aber Sie können es mit jedem PHP-Projekt verwenden, das Composer verwendet.
Kauf mir einen Kaffee | Folgen Sie Corcel auf 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 |
Sie müssen Composer verwenden, um Corcel in Ihrem Projekt zu installieren:
composer require jgrossi/corcel
Corcel wird sich mithilfe von Laravels Auto Discovery registrieren.
Sie müssen CorcelServiceProvider
in Ihre config/app.php
aufnehmen:
' providers ' => [
/*
* Package Service Providers...
*/
Corcel Laravel CorcelServiceProvider::class,
]
Konfigurieren Sie nun unsere Konfigurationsdatei, um sicherzustellen, dass Ihre Datenbank richtig eingestellt ist und um Ihnen die Registrierung benutzerdefinierter Beitragstypen und Shortcodes auf sehr einfache Weise zu ermöglichen:
Führen Sie den folgenden Artisan-Befehl in Ihrem Terminal aus:
php artisan vendor:publish --provider="CorcelLaravelCorcelServiceProvider"
Jetzt haben Sie eine Konfigurationsdatei config/corcel.php
, in der Sie die Datenbankverbindung mit WordPress-Tabellen und vieles mehr festlegen können.
Legen Sie einfach in config/corcel.php
die connection
fest, die Corcel verwenden soll.
Nehmen wir an, Sie haben die folgenden Datenbankverbindungen in Ihrer Datei config/database.php
:
// 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 ,
],
],
In diesem Fall sollten Sie die wordpress
-Verbindung für Corcel verwenden wollen, also legen Sie sie einfach in der Corcel-Konfigurationsdatei config/corcel.php
fest:
' connection ' => ' wordpress ' ,
Hier müssen Sie die Datenbank so konfigurieren, dass sie den Corcel-Anforderungen entspricht. Zunächst sollten Sie die Composer- autoload
Datei einschließen, falls sie noch nicht geladen ist:
require __DIR__ . ' /vendor/autoload.php ' ;
Jetzt müssen Sie Ihre WordPress-Datenbankparameter festlegen:
$ 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 );
Sie können alle Eloquent-Parameter angeben, einige sind jedoch Standardparameter (Sie können sie jedoch überschreiben).
' driver ' => ' mysql ' ,
' host ' => ' localhost ' ,
' charset ' => ' utf8 ' ,
' collation ' => ' utf8_unicode_ci ' ,
' prefix ' => ' wp_ ' , // Specify the prefix for WordPress tables, default prefix is 'wp_'
Jedes Mal, wenn Sie
Post::method()
sehen, sollten SieAppPost::method()
und nichtPost::method()
verwenden, wenn Sie Ihre eigene Post-Klasse (in der Sie den Verbindungsnamen festlegen) wieAppPost
verwendenPost::method()
. Bei allen Beispielen wird davon ausgegangen, dass Sie diesen Unterschied bereits kennen.
In den Beispielen wird jedes Mal, wenn Sie
Post::method()
sehen,CorcelModelPost::method()
angenommen.
// All published posts
$ posts = Post:: published ()-> get ();
$ posts = Post:: status ( ' publish ' )-> get ();
// A specific post
$ post = Post:: find ( 31 );
echo $ post -> post_title ;
Optional können Sie Ihr eigenes Post
Modell (oder Ihre eigene Seite oder was auch immer) erstellen, das CorcelPost
erweitert. Legen Sie dann den von Ihnen verwendeten Verbindungsnamen fest (wenn Sie den Standardnamen von Corcel überschreiben möchten), in diesem Fall foo-bar
:
Durch die Erweiterung
CorcelModelPost
Klasse können Sie Ihrem Projekt mehr Flexibilität verleihen, da Sie benutzerdefinierte Methoden und Logik hinzufügen können, je nachdem, was Sie aus Ihrer WordPress-Datenbank verwenden müssen.
<?php // File: app/Post.php
namespace App ;
use Corcel Model Post as Corcel ;
class Post extends Corcel
{
protected $ connection = ' foo-bar ' ;
public function customMethod () {
//
}
}
Jetzt können Sie WP-Datenbankdaten mit Ihrer eigenen Klasse abrufen:
$ posts = App Post:: all (); // using the 'foo-bar' connection
Denken Sie daran, dass Sie unsere
Post
Klasse nicht erweitern müssen, Sie könnenCorcelModelPost
und alle anderen Modelle problemlos verwenden.
HINWEIS: In Corcel v1 können Sie Metadaten mit der Methode
Post::save()
speichern. Das ist nicht mehr erlaubt. Verwenden Sie die MethodensaveMeta()
odercreateMeta()
(siehe unten), um Post-Meta zu speichern.
Sie können Metadaten auch aus Beiträgen abrufen.
// 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
Um Metadaten von einem Benutzer zu erstellen oder zu aktualisieren, verwenden Sie einfach die Methoden saveMeta()
oder saveField()
. Sie geben bool
wie die Eloquent-Methode save()
zurück.
$ post = Post:: find ( 1 );
$ post -> saveMeta ( ' username ' , ' jgrossi ' );
Sie können auch viele Metadaten gleichzeitig speichern:
$ post = Post:: find ( 1 );
$ post -> saveMeta ([
' username ' => ' jgrossi ' ,
' url ' => ' http://jgrossi.com ' ,
]);
Sie haben auch die Methoden createMeta()
und createField()
, die wie die Methoden saveX()
funktionieren, aber nur für die Erstellung verwendet werden und die PostMeta
erstellte Instanz anstelle von bool
zurückgeben.
$ post = Post:: find ( 1 );
$ postMeta = $ post -> createMeta ( ' foo ' , ' bar ' ); // instance of PostMeta class
$ trueOrFalse = $ post -> saveMeta ( ' foo ' , ' baz ' ); // boolean
Es gibt mehrere Möglichkeiten, Beiträge nach ihren benutzerdefinierten Feldern (Meta) abzufragen, indem Bereiche für eine Post
Klasse (oder ein anderes anderes Modell, das das HasMetaFields
Merkmal verwendet) verwendet werden:
Um zu überprüfen, ob ein Metaschlüssel vorhanden ist, verwenden Sie den Bereich hasMeta()
:
// Finds a published post with a meta flag.
$post = Post::published()->hasMeta('featured_article')->first();
Wenn Sie ein Metafeld genau abgleichen möchten, können Sie den hasMeta()
-Bereich mit einem Wert verwenden.
// Find a published post which matches both meta_key and meta_value.
$ post = Post:: published ()-> hasMeta ( ' username ' , ' jgrossi ' )-> first ();
Wenn Sie mehrere Metafelder abgleichen müssen, können Sie auch den hasMeta()
Bereich verwenden und ein Array als Parameter übergeben:
$ 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 ();
Wenn Sie eine Zeichenfolge ohne Berücksichtigung der Groß-/Kleinschreibung oder mit Platzhaltern abgleichen müssen, können Sie den hasMetaLike()
-Bereich mit einem Wert verwenden. Hierbei wird ein SQL- LIKE
-Operator verwendet. Verwenden Sie daher „%“ als Platzhalteroperator.
// 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 ();
Die Post
Klasse unterstützt „Aliase“. Wenn Sie also die Post
Klasse überprüfen, sollten Sie einige Aliase beachten, die im statischen $aliases
-Array definiert sind, z. B. title
für post_title
und content
für post_content
.
$ post = Post:: find ( 1 );
$ post -> title === $ post -> post_title ; // true
Wenn Sie die Post
-Klasse erweitern, um eine eigene Klasse zu erstellen, können Sie auch $aliases
verwenden. Fügen Sie einfach neue Aliase zu dieser statischen Eigenschaft in Ihrer eigenen Klasse hinzu und sie erbt automatisch alle Aliase von der übergeordneten Post
Klasse:
class A extends Corcel Post
{
protected static $ aliases = [
' foo ' => ' post_foo ' ,
];
}
$ a = A:: find ( 1 );
echo $ a -> foo ;
echo $ a -> title ; // from Post class
Um Beiträge zu ordnen, können Sie die Bereiche newest()
und oldest()
für die Klassen Post
und User
verwenden:
$ newest = Post:: newest ()-> first ();
$ oldest = Post:: oldest ()-> first ();
Um Beiträge zu bestellen, verwenden Sie einfach die Eloquent paginate()
-Methode:
$ posts = Post:: published ()-> paginate ( 5 );
foreach ( $ posts as $ post ) {
// ...
}
Um die Paginierungslinks anzuzeigen, rufen Sie einfach die Methode links()
auf:
{{ $ posts -> links () }}
Wenn Sie ein vom Advanced Custom Fields (ACF)-Plugin erstelltes benutzerdefiniertes Feld abrufen möchten, müssen Sie das corcel/acf
Plugin installieren – klicken Sie hier für weitere Informationen – und das benutzerdefinierte Feld wie folgt aufrufen:
$ post = Post:: find ( 123 );
echo $ post -> acf -> some_radio_field ;
$ repeaterFields = $ post -> acf -> my_repeater_name ;
Um unnötige SQL-Abfragen zu vermeiden, legen Sie einfach den Feldtyp fest, den Sie anfordern. Normalerweise sind zwei SQL-Abfragen erforderlich, um den Feldtyp zu erhalten. Wenn Sie ihn also angeben möchten, überspringen Sie diese zusätzlichen Abfragen:
$ post = Post:: find ( 123 );
echo $ post -> acf -> text ( ' text_field_name ' );
echo $ post -> acf -> boolean ( ' boolean_field_name ' );
Sie können auch mit benutzerdefinierten Beitragstypen arbeiten. Sie können die Methode type(string)
verwenden oder Ihre eigene Klasse erstellen.
// 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 ();
Durch die Verwendung der Methode type()
gibt Corcel alle Objekte als CorcelPost
zurück. Wenn Sie Ihre benutzerdefinierte Klasse verwenden, haben Sie den Vorteil, Klassen, einschließlich benutzerdefinierter Methoden und Eigenschaften, anzupassen und alle Objekte beispielsweise als Video
zurückzugeben.
Benutzerdefinierte Beitragstypen und Metadaten:
// 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
}
Jedes Mal, wenn Sie etwas wie Post::type('video)->first()
oder Video::first()
aufrufen, erhalten Sie eine CorcelModelPost
Instanz.
Wenn Sie eine neue Klasse für Ihren benutzerdefinierten Beitragstyp erstellen, können Sie festlegen, dass diese Klasse für alle Instanzen dieses Beitragstyps zurückgegeben wird.
Anstatt Post::registerPostType()
Methode für alle benutzerdefinierten Beitragstypen aufzurufen, die Sie registrieren möchten, verwenden Sie einfach die Konfigurationsdatei von Corcel und ordnen Sie alle benutzerdefinierten Beiträge und ihre Klassen zu. Sie werden automatisch für Sie registriert:
' post_types ' => [
' video ' => App Video::class,
' foo ' => App Foo::class,
]
Jedes Mal, wenn Sie einen benutzerdefinierten Beitragstyp abfragen, wird die zugeordnete Instanz zurückgegeben.
Dies ist besonders nützlich, wenn Sie eine Sammlung von Beiträgen unterschiedlicher Art abrufen möchten (z. B. beim Abrufen der in einem Menü definierten Beiträge).
//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 ();
Sie können dies auch für integrierte Klassen wie Page oder Post tun. Registrieren Sie einfach die Page- oder Post-Klasse mit der zugehörigen Beitragstypzeichenfolge, und dieses Objekt wird anstelle des Standardobjekts zurückgegeben.
Sie können alle gewünschten Shortcodes in der Datei config/corcel.php
unter dem Schlüssel 'shortcodes'
zuordnen. In diesem Fall sollten Sie Ihre eigene Klasse erstellen, die die CorcelShortcode
Schnittstelle implements
, die eine render()
Methode erfordert:
' shortcodes ' => [
' foo ' => App Shortcodes FooShortcode::class,
' bar ' => App Shortcodes BarShortcode::class,
],
Dies ist eine Beispiel-Shortcode-Klasse:
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 ' )
);
}
}
Sie können Shortcodes hinzufügen, indem Sie die Methode addShortcode
im Post
-Modell aufrufen:
// [gallery id="1"]
Post:: addShortcode ( ' gallery ' , function ( $ shortcode ) {
return $ shortcode -> getName () . ' . ' . $ shortcode -> getParameter ( ' id ' );
});
$ post = Post:: find ( 1 );
echo $ post -> content ;
Laravel 5.5 verwendet Package Auto-Discovery, sodass Sie den ServiceProvider nicht manuell hinzufügen müssen
Wenn Sie Laravel verwenden, empfehlen wir, Ihre Shortcode-Handler in AppProvidersAppServiceProvider
in der boot
-Methode hinzuzufügen.
Shortcodes werden mit der Thunderer/Shortcode -Bibliothek analysiert.
Es stehen mehrere verschiedene Parser zur Verfügung. RegularParser
ist technisch am korrektesten und wird standardmäßig bereitgestellt. Dies ist für die meisten Fälle geeignet. Wenn Sie jedoch beim Parsen Ihrer Shortcodes auf Unregelmäßigkeiten stoßen, müssen Sie Corcel möglicherweise für die Verwendung des WordpressParser
konfigurieren, der dem Shortcode-Regex von WordPress besser entspricht. Wenn Sie Laravel verwenden, bearbeiten Sie dazu die Datei config/corcel.php
und kommentieren Sie Ihren bevorzugten Parser aus. Alternativ können Sie dies durch einen eigenen Parser ersetzen.
' shortcode_parser ' => Thunder Shortcode Parser RegularParser::class,
// 'shortcode_parser' => ThunderShortcodeParserWordpressParser::class,
Wenn Sie Laravel nicht verwenden, können Sie dies zur Laufzeit tun, indem Sie die Methode setShortcodeParser()
aus jeder Klasse aufrufen, die das Shortcodes
Merkmal verwendet, wie zum Beispiel Post
.
$ post -> setShortcodeParser ( new WordpressParser ());
echo $ post -> content ; // content parsed with "WordpressParser" class
Weitere Informationen zum Shortcode-Paket finden Sie hier.
Sie können Taxonomien für einen bestimmten Beitrag abrufen, z. B.:
$ post = Post:: find ( 1 );
$ taxonomy = $ post -> taxonomies ()-> first ();
echo $ taxonomy -> taxonomy ;
Oder Sie können anhand der Taxonomien nach Beiträgen suchen:
$ post = Post:: taxonomy ( ' category ' , ' php ' )-> first ();
Sie können das Postformat auch abrufen, beispielsweise mit der WordPress-Funktion get_post_format()
:
echo $ post -> getFormat (); // should return something like 'video', etc
Seiten sind wie benutzerdefinierte Beitragstypen. Sie können Post::type('page')
oder die Klasse CorcelModelPage
verwenden.
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 ;
Rufen Sie eine Kategorie oder Taxonomie ab oder laden Sie Beiträge aus einer bestimmten Kategorie. Es gibt mehrere Möglichkeiten, dies zu erreichen.
// 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 ;
});
Den Anhang und/oder die Überarbeitung von einem Post
oder Page
abrufen.
$ 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 );
Das Miniaturbild für einen Post
oder Page
abrufen.
$ 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 ;
Um eine bestimmte Miniaturbildgröße abzurufen, können Sie die ->size()
Methode für das Miniaturbildobjekt aufrufen und einen Zeichenfolgenparameter für die Miniaturbildgröße übergeben (z. B. thumbnail
oder medium
). Wenn das Miniaturbild generiert wurde, gibt diese Methode ein Array von Bildmetadaten zurück, andernfalls wird die ursprüngliche Bild-URL als Fallback zurückgegeben.
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 ' ));
}
In früheren Versionen von Corcel hieß diese Klasse
Options
stattOption
(Singular). Achten Sie also darauf, diese Klasse abv2.0.0
immer in der Singularform zu verwenden.
Die
Option::getAll()
Methode wurde in Corcel 2+ zugunsten vonOption::asArray($keys [])
entfernt.
Sie können die Option
-Klasse verwenden, um Daten aus der Tabelle wp_options
abzurufen:
$ siteUrl = Option:: get ( ' siteurl ' );
Sie können auch neue Optionen hinzufügen:
Option:: add ( ' foo ' , ' bar ' ); // stored as string
Option:: add ( ' baz ' , [ ' one ' => ' two ' ]); // this will be serialized and saved
Sie können alle Optionen in einem einfachen Array erhalten:
$ options = Option:: asArray ();
echo $ options [ ' siteurl ' ];
Oder Sie können nur die Schlüssel angeben, die Sie erhalten möchten:
$ options = Option:: asArray ([ ' siteurl ' , ' home ' , ' blogname ' ]);
echo $ options [ ' home ' ];
Um ein Menü anhand seines Slugs zu erhalten, verwenden Sie die folgende Syntax. Die Menüelemente werden in die Variable items
geladen (eine Sammlung von CorcelModelMenuItem
Objekten).
Die derzeit unterstützten Menüelemente sind: Seiten, Beiträge, benutzerdefinierte Links und Kategorien.
Sobald Sie über Instanzen der MenuItem
Klasse verfügen und die ursprüngliche Instanz verwenden möchten (z. B. die ursprüngliche Seite oder den ursprünglichen Begriff), rufen Sie einfach die Methode MenuItem::instance()
auf. Das MenuItem
-Objekt ist nur ein Beitrag mit post_type
gleich 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
}
Die Methode instance()
gibt das passende Objekt zurück:
Post
Instanz für post
-Menüelement;Page
für page
;CustomLink
Instanz für custom
Menüelement;Term
für category
.Um Menüs mit mehreren Ebenen zu verarbeiten, durchlaufen Sie beispielsweise alle Menüelemente, um sie auf den richtigen Ebenen zu platzieren.
Sie können die Methode MenuItem::parent()
verwenden, um die übergeordnete Instanz dieses Menüelements abzurufen:
$ items = Menu:: slug ( ' foo ' )-> first ()-> items ;
$ parent = $ items -> first ()-> parent (); // Post, Page, CustomLink or Term (category)
Um Menüelemente nach ihren übergeordneten Elementen zu gruppieren, können Sie die Methode ->groupBy()
in der $menu->items
-Auflistung verwenden und Menüelemente nach ihrer $item->parent()->ID
gruppieren.
Weitere Informationen zur Methode groupBy()
finden Sie in der Laravel-Dokumentation.
Sie können Benutzer auf die gleiche Weise manipulieren, wie Sie mit Beiträgen arbeiten:
// All users
$ users = User:: get ();
// A specific user
$ user = User:: find ( 1 );
echo $ user -> user_login ;
Wenn Sie Laravel 5.4 oder älter verwenden, stellen Sie sicher, dass Sie den CorcelServiceProvider
-Anbieter registriert haben.
Und dann definieren Sie den Benutzeranbieter in config/auth.php
um Laravel die Anmeldung mit WordPress-Benutzern zu ermöglichen:
' providers ' => [
' users ' => [
' driver ' => ' corcel ' ,
' model ' => Corcel Model User::class,
],
],
Jetzt können Sie die Auth
Fassade verwenden, um Benutzer zu authentifizieren:
Auth:: validate ([
' email ' => ' [email protected] ' , // or using 'username' too
' password ' => ' secret ' ,
]);
Damit Laravels Passwort-Reset mit Corcel funktioniert, müssen wir die Art und Weise überschreiben, wie Passwörter in der Datenbank gespeichert werden. Dazu müssen Sie Auth/PasswordController.php
ändern von:
use App Http Controllers Controller ;
use Illuminate Foundation Auth ResetsPasswords ;
class PasswordController extends Controller
{
use ResetsPasswords;
Zu
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;
}
Sie können die Klasse AuthUserProvider
verwenden, um einen Benutzer manuell zu authentifizieren:
$ userProvider = new Corcel Laravel Auth AuthUserProvider ;
$ user = $ userProvider -> retrieveByCredentials ([ ' username ' => ' admin ' ]);
if (! is_null ( $ user ) && $ userProvider -> validateCredentials ( $ user , [ ' password ' => ' admin ' ])) {
// successfully login
}
Denken Sie daran, dass Sie sowohl
username
als auch
Um die PHPUnit-Tests auszuführen, führen Sie den folgenden Befehl aus:
./vendor/bin/phpunit
Wenn Sie den globalen Befehl phpunit
installiert haben, können Sie einfach Folgendes eingeben:
phpunit
Alle Tests wurden mit SQLite mit der Datenbank :memory
geschrieben, sodass sie in Ihrem Speicher ausgeführt werden. Alle Tests verwenden factories
und migrations
. Weitere Informationen finden Sie in den Verzeichnissen tests/database/factories
und tests/database/migrations
.
Alle Beiträge sind willkommen, um Corcel zu verbessern.
Bevor Sie Ihren Pull Request (PR) einreichen, beachten Sie die folgenden Richtlinien:
Fork https://github.com/corcel/corcel in Github;
Klonen Sie Ihr geforktes Repository (nicht das von Corcel) lokal und erstellen Sie Ihren eigenen Zweig basierend auf der Version, die Sie reparieren möchten ( 2.1
, 2.2
, 2.3
, 2.4
oder 2.5
): git checkout -b my-fix-branch 2.5
;
Nehmen Sie alle Codeänderungen vor. Denken Sie daran, hier mindestens einen Testfall für jede von Ihnen hinzugefügte Funktion oder jeden Bugfix zu schreiben (falls dieser noch nicht getestet wurde). Unser Ziel ist es, 100 % des Codes durch Tests abzudecken. Helfen Sie uns also, einen besseren Code zu schreiben ;-) Wenn Sie keine Erfahrung mit Tests haben, ist dies eine gute Gelegenheit, etwas zu lernen. Werfen Sie einfach einen Blick in unsere Testfälle und Sie werden sehen, wie einfach sie sind.
Führen Sie die Komponententests lokal aus, um sicherzustellen, dass Ihre Änderungen keinen anderen Code beschädigen.
Schieben Sie Ihren neuen Zweig in Ihr geforktes Repository. Normalerweise sollte git push origin HEAD
funktionieren.
Erstellen Sie in GitHub erneut einen Pull Request (PR) von Ihrem benutzerdefinierten my-fix-branch
Zweig (aus Ihrem gespaltenen Repository) zum zugehörigen Zweig ( corcel:2.5
, zum Beispiel, nicht corcel:master
, bitte;
Warte auf die Genehmigung :-)
MIT-Lizenz © Junior Grossi