Laravel 5 Klasse 'Formular' nicht gefunden

71

Ich habe "illuminate / html": "5. *" zu composer.json hinzugefügt und "composer update" ausgeführt.

  - Installing illuminate/html (v5.0.0)
    Loading from cache

Ich habe diesen Befehl im Stammverzeichnis der Website ausgeführt. Ich habe die Datei composer.json in /root/.composer ... und im Stammverzeichnis des Projekts geändert und beides hat keinen Unterschied gemacht.

Dadurch wurde die Klasse heruntergeladen und sie schien installiert zu sein. Ich habe der Datei config / app.php Folgendes hinzugefügt .

    'Illuminate\Html\HtmlServiceProvider',

    'Form'      => 'Illuminate\Html\FormFacade',
    'Html'      => 'Illuminate\Html\HtmlFacade',

Ich glaube, ich habe eine Idee, was falsch ist, aber ich weiß nicht, wie ich das beheben soll. Meine Installation befindet sich in '/ var / www / website'. Ich habe den Dateipfad überprüft und der HTML- Ordner existiert nicht.

"/var/www/website/vendor/laravel/framework/src/Illuminate/Html"

Ich konnte die Klassendateien finden, aber in einem anderen Verzeichnis.

"/var/www/website/vendor/illuminate/html"

Ich habe die Dateien manuell in den Hauptordner Laravel illuminate / html kopiert , aber das hat auch nicht funktioniert.

Dan Hastings
quelle

Antworten:

48

Dies ist möglicherweise nicht die Antwort, nach der Sie suchen, aber ich würde empfehlen, das jetzt von der Community verwaltete Repository Laravel Collective Forms & HTML zu verwenden, da die Haupt-Repositorys veraltet sind.

Laravel Collective ist dabei, ihre Website zu aktualisieren. Sie können die Dokumentation auf GitHub bei Bedarf anzeigen .

mhanson01
quelle
1
Irgendeine Idee, warum dies in v5 entfernt wurde?
musicliftsme
4
Anscheinend wollen sie es leichter machen und die Leute Dinge nur dann hinzufügen lassen, wenn sie sie brauchen.
Dan Hastings
1
Haben sie es im Upgrade-Handbuch oder woanders bemerkt? hab's nicht gesehen.
KeiserBridge
Dank wusste nicht, dass dies neu in Laravel ist und es immer noch in den Hauptdokumenten enthalten ist, also hatte ich keine Ahnung, dass dies nicht in Version 5 war.
Sam
93

Formist nicht in eingeschlossen laravel 5,0 , wie es auf war 4.0 , Schritte sie enthalten:

Beginnen Sie mit der Installation des laravelcollective/htmlPakets durch Composer. Bearbeiten Sie die composer.jsonDatei Ihres Projekts nach Bedarf:

"require": {
    "laravelcollective/html": "~5.0"
}

Als nächstes aktualisieren Sie composervom Terminal:

composer update

Fügen Sie als Nächstes Ihren neuen Anbieter zum providersArray hinzu config/app.php:

'providers' => [
  // ...
  'Collective\Html\HtmlServiceProvider',
  // ...
],

Fügen Sie schließlich zwei Klassen-Aliase zum aliasesArray hinzu config/app.php:

'aliases' => [
// ...
  'Form' => 'Collective\Html\FormFacade',
  'Html' => 'Collective\Html\HtmlFacade',
// ...
],

An diesem Punkt Formsollte funktionieren

Quelle


Update Laravel 5.8 (05.04.2019):

In Laravel 5.8kann das providersin config/app.phpde deklariert werden als:

Collective\Html\HtmlServiceProvider::class,

Anstatt von:

'Collective\Html\HtmlServiceProvider',

Diese Notation ist für die Aliase gleich.

Pedro Lobito
quelle
2
Der SRC-Link wurde aktualisiert. laravelcollective.com/docs/5.3/html Von 5.0 auf 5.3 wurden die Abschnitte für Anbieter und Aliase geändert. Collective \ Html \ HtmlServiceProvider :: class für Anbieter und dann 'Form' => Collective \ Html \ FormFacade :: class und 'Html' => Collective \ Html \ HtmlFacade :: class für Aliase.
Marty
1
Warum wird in den Laravel-Dokumenten nicht klargestellt, dass die eher grundlegende Komponente standardmäßig nicht enthalten ist?
Brad
27

Geben Sie einfach den folgenden Befehl in terminal im Projektverzeichnis ein und die Installation erfolgt gemäß der Laravel-Version:

composer require "laravelcollective/html"

Fügen Sie dann diese Zeilen hinzu config/app.php

'providers' => [
    // ...
    Collective\Html\HtmlServiceProvider::class,
    // ...
],

'aliases' => [
    // ...
   'Form' => Collective\Html\FormFacade::class,
   'Html' => Collective\Html\HtmlFacade::class,
    // ...
],
Ahmed Mahmoud
quelle
Tolle Antwort. Tnq so viel
rashedcs
24

Sie können auch versuchen, die folgenden Befehle in Terminal oder Befehl auszuführen:

  1. composer dump-auto oder composer dump-auto -o
  2. php artisan cache:clear
  3. php artisan config:clear

Das obige hat bei mir funktioniert.

user28864
quelle
16

Es gibt ein Update für Laravel 5.2. Beachten Sie, dass dies ein etwas anderes Format ist als oben angegeben.

Beginnen Sie mit der Installation dieses Pakets über Composer. Bearbeiten Sie die Datei composer.json Ihres Projekts, um laravelcollective / html zu benötigen.

"require": {
    "laravelcollective/html": "5.2.*"
}

Aktualisieren Sie als Nächstes Composer vom Terminal aus:

composer update

Fügen Sie als Nächstes Ihren neuen Provider zum Provider-Array von config / app.php hinzu:

  'providers' => [
    // ...
    Collective\Html\HtmlServiceProvider::class,
    // ...
  ],

Fügen Sie schließlich dem Aliase-Array von config / app.php zwei Klassen-Aliase hinzu:

  'aliases' => [
    // ...
      'Form' => Collective\Html\FormFacade::class,
      'Html' => Collective\Html\HtmlFacade::class,
    // ...
  ],

Nach diesem Update funktionierte dieser Code für mich bei einer neuen Installation von Laravel 5.2:

{!! Form::open(array('url' => 'foo/bar')) !!}
    //
{!! Form::close() !!}

Ich habe diese Informationen hier erhalten: https://laravelcollective.com/docs/5.2/html

jessier3
quelle
5

Beginnen Sie mit der Installation dieses Pakets über Composer. Führen Sie vom Terminal aus Folgendes aus:

composer require "laravelcollective/html":"^5.3.0"

Fügen Sie als Nächstes Ihren neuen Provider zum Provider-Array von config / app.php hinzu:

'providers' => [
    // ...
    Collective\Html\HtmlServiceProvider::class,
    // ...
  ],

Fügen Sie schließlich dem Aliase-Array von config / app.php zwei Klassen-Aliase hinzu:

'aliases' => [
    // ...
      'Form' => Collective\Html\FormFacade::class,
      'Html' => Collective\Html\HtmlFacade::class,
    // ...
  ],

SRC:

https://laravelcollective.com/docs/5.3/html

Raham
quelle
2

In Laravel Version 4 existierten HTML und Form, aber nicht jetzt.

Warum:

Der einzige Grund ist, dass sie einige Benutzeranforderungen gesammelt haben und sie leichter haben möchten. Deshalb haben sie sie entfernt, so wie ein Benutzer sie manuell hinzufügen kann.

Was tun, um HTML & Formulare in Laravel 5.2 oder 5.3 hinzuzufügen:

Für 5.2:

Gehen Sie zu den Laravel Collective Website und Installationsprozesse haben ihre demonstriert.

Wie in 5.2: Führen Sie den Befehl in der Befehlszeile aus

composer require "laravelcollective/html":"^5.2.0"

Dann im Provider- Array, das sich in config / app.php befindet . Fügen Sie diese Zeile zuletzt mit einem Komma (,) hinzu:

Collective\Html\HtmlServiceProvider::class,

Für die Verwendung von HTML- und FORM-Text müssen diese im Aliase-Array von config / app.php aliasisiert werden . Fügen Sie die beiden Zeilen zuletzt hinzu

'Form' => Collective\Html\FormFacade::class,
'Html' => Collective\Html\HtmlFacade::class,

Und für 5.3:

Führen Sie einfach den Befehl aus

composer require "laravelcollective/html":"^5.3.0"

Und der Rest des Verfahrens ist wie 5.2 .

Dann können Sie Laravel Form und andere HTML-Links in Ihren Projekten verwenden. Befolgen Sie dazu diese Dokumentation:

5.2: https://laravelcollective.com/docs/5.2/html

5.3: https://laravelcollective.com/docs/5.3/html

Demo-Code:

Um ein Formular zu öffnen, öffnen und schließen Sie ein Tag:

{!! Form::open(['url' => 'foo/bar']) !!}

{!! Form::close() !!}

Und zum Erstellen von Beschriftungs- und Eingabetexten mit einer Bootstrap-Formularsteuerungsklasse und für andere Zwecke:

{!! Form::label('title', 'Post Title') !!}
{!! Form::text('title', null, array('class' => 'form-control')) !!}

Weitere Informationen finden Sie in der Dokumentation unter https://laravelcollective.com/ .

Maniruzzaman Akash
quelle
1

Verwenden Sie Formnicht form. Die Großschreibung zählt.

kpp
quelle
0

Ich habe alles versucht, aber nur das hat geholfen:

php artisan route:clear
php artisan cache:clear
Krzysztof Dziuba
quelle