Heim >Backend-Entwicklung >PHP-Tutorial >So erstellen Sie ein Oktober -Widget -Plugin
Dieser Artikel befasst sich mit dem Erstellen eines Oktober -Backend -Widget -Plugins und erweitert die grundlegende Plugin -Erstellung. Wir werden ein "Schnellnotiz" -Widget entwickeln, das WordPress's Quick Draft -Funktionalität spiegelt.
Schlüsselkonzepte:
php artisan create:plugin
. QuickNoteWidget
) für das Backend -Dashboard. defineProperties
) für die Anpassung (z. B. verbergen die Notizliste, ändern Sie den Titel). Erstellen des schnellen Note -Widgets:
Wir erstellen ein Widget, mit dem Benutzer kurze Notizen direkt aus ihrem Oktober -Dashboard hinzufügen und verwalten können.
1. Plugin -Setup:
Generieren Sie das Plugin mit der Befehlszeile:
<code class="language-bash">php artisan create:plugin RAFIE.quicknote</code>
update Plugin.php
mit Plugin -Details:
<code class="language-php">public function pluginDetails() { return [ 'name' => 'Quick Note Widget', 'description' => 'Quickly add and manage short notes.', 'author' => 'RAFIE Younes', 'icon' => 'icon-pencil' ]; }</code>
und das version.yaml
:
<code class="language-yaml"># uploads/version.yaml 1.0.1: First version of quicknote 1.0.2: - Created Notes Table - create_notes_table.php</code>
2. Datenbankmodell:
Erstellen Sie das Modell und die Migration Note
:
<code class="language-bash">php artisan create:model RAFIE.quicknote Note</code>
Die Migration (create_notes_table.php
) sieht so aus:
<code class="language-php">Schema::create('rafie_quicknote_notes', function ($table) { $table->engine = 'InnoDB'; $table->increments('id'); $table->string('title', 255); $table->text('description')->nullable(); $table->integer('user_id')->unsigned()->index(); $table->timestamps(); });</code>
Aktualisieren Sie das Plugin:
<code class="language-bash">php artisan plugin:refresh RAFIE.quicknote</code>
erweitern Sie das User
Modell in Plugin.php
:
<code class="language-php">public function boot() { User::extend(function ($model) { $model->hasMany['notes'] = ['RAFIE\Quicknote\Models\Note']; }); }</code>
das Note
Modell (models/Note.php
):
<code class="language-php">use October\Rain\Database\Traits\Validation; class Note extends Model { use Validation; public $table = 'rafie_quicknote_notes'; protected $guarded = ['*']; protected $rules = [ 'title' => 'required|min:4' ]; public $belongsTo = ['user' => ['Backend\Models\User']]; }</code>
3. Widget -Erstellung:
erstellen QuickNoteWidget.php
(im Ordner widgets
):
<code class="language-php">class QuickNoteWidget extends ReportWidgetBase { public function render() { $notes = BackendAuth::getUser()->notes; return $this->makePartial('notes', ['notes' => $notes]); } public function defineProperties() { return [ 'title' => [ 'title' => 'Widget Title', 'default' => 'Quick Note' ], 'showList' => [ 'title' => 'Show Notes List', 'type' => 'checkbox' ] ]; } }</code>
Registrieren Sie das Widget in Plugin.php
:
<code class="language-php">public function registerReportWidgets() { return [ 'RAFIE\Quicknote\QuickNoteWidget' => [ 'label' => 'Quick Notes', 'context' => 'dashboard' ] ]; }</code>
Erstellen Sie die partielle _notes.htm
(in widgets/quicknotewidget/partials
):
<code class="language-html"><div class="report-widget"> <h3>{{ $this->property('title') }}</h3> <div class="pane"> @if ($this->property('showList')) <ul class="list-nostyle"> @foreach ($notes as $note) <li class="list-group-item">{{ $note->title }}</li> @endforeach </ul> @endif <br> {{ Form::open(['url' => Backend::url('rafie/quicknote/notes/store'), 'method' => 'POST']) }} <div class="form-group"> <input class="form-control" type="text" name="title" placeholder="Title" required> </div> <div class="form-group"> <textarea class="form-control" name="description" id="" cols="30" rows="10" placeholder="Your note..."></textarea> </div> <div class="form-group"> <button type="submit" class="btn btn-primary" value="Submit">Submit</button> <a href="https://www.php.cn/link/b4c174fbc208372a8facfe462868ebf1'rafie/quicknote/notes/index')%20%7D%7D">Manage your notes</a> </div> {{ Form::close() }} </div> </div></code>
4. Controller (controllers/Notes.php
):
<code class="language-php">class Notes extends Controller { public function store() { $note = new Models\Note; $note->title = Input::get('title'); $note->description = Input::get('description', null); $note->user_id = BackendAuth::getUser()->id; if ($note->save()) { Flash::success('Note added successfully.'); } else { Flash::error('Validation error'); } return Redirect::to(Backend::url()); } // ... (rest of the controller code as described in the original response) ... }</code>
Denken Sie daran, die verbleibenden Controller -Aktionen (Index, Erstellen, Aktualisieren, Löschen) und ihre zugehörigen Konfigurationsdateien (config_list.yaml
, config_form.yaml
, columns.yaml
, fields.yaml
, Teils) wie in der ursprünglichen Antwort beschrieben zu machen. Das Bild, das die Controller -Struktur zeigt, ist hilfreich:
5. Backend -Liste und Formularkonfiguration:
Konfigurieren Sie die Backend -Auflistung und das Formular mit config_list.yaml
und config_form.yaml
, wie in der ursprünglichen Antwort gezeigt. Achten Sie genau auf die listExtendQueryBefore
-Methode im Controller, um sicherzustellen, dass nur die Notizen des aktuellen Benutzers angezeigt werden. Der Screenshot der Formularkonfiguration ist nützlich:
Mit dieser detaillierten Aufschlüsselung können Sie das Quick Note -Widget erstellen. Denken Sie daran, die Dokumentation der OctionCMS zu konsultieren, um weitere Unterstützung zu erhalten und den Code an Ihre spezifischen Anforderungen anzupassen. Die FAQs am Ende der ursprünglichen Antwort liefern zusätzliche hilfreiche Informationen für die Zusammenarbeit mit Oktober.
Das obige ist der detaillierte Inhalt vonSo erstellen Sie ein Oktober -Widget -Plugin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!