Heim >Backend-Entwicklung >PHP-Tutorial >So erstellen Sie ein Oktober -Widget -Plugin

So erstellen Sie ein Oktober -Widget -Plugin

Christopher Nolan
Christopher NolanOriginal
2025-02-18 12:47:10165Durchsuche

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.

How to Build an OctoberCMS Widget Plugin

Schlüsselkonzepte:

  • Plugin -Gerüst mit php artisan create:plugin.
  • Erweitern Sie das Benutzermodell, um benutzerspezifische Notizen zu verwalten.
  • Implementieren eines Berichts -Widgets (QuickNoteWidget) für das Backend -Dashboard.
  • Definieren von Widget -Eigenschaften (defineProperties) für die Anpassung (z. B. verbergen die Notizliste, ändern Sie den Titel).
  • Verwenden von Controllern und Modellen für die Form des Formulars, Notizmanagement (CRUD Operations).

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.

How to Build an OctoberCMS Widget Plugin How to Build an OctoberCMS Widget Plugin

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>

How to Build an OctoberCMS Widget Plugin

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:

How to Build an OctoberCMS Widget Plugin

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:

How to Build an OctoberCMS Widget Plugin

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn