Je suis nouveau à Laravel et j'utilise la version 5.2 de Laravel.
J'ai créé un contrôleur et une requête nommés respectivement ArticlesController et CreateArticleRequest et j'ai défini des règles de validation.
CreateArticleRequest
<?php
namespace App\Http\Requests;
use App\Http\Requests\Request;
class CreateArticleRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'title' => 'required|min:3',
'body' => 'required|max:400',
'published_at' => 'required|date',
];
}
}
ArticlesController
<?php
namespace App\Http\Controllers;
use App\Article;
//use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Carbon\Carbon;
use App\Http\Requests\CreateArticleRequest;
class ArticlesController extends Controller
{
public function add(){
return view('articles.add');
}
public function create_article_row(CreateArticleRequest $request){
Article::create($request->all());
return redirect('articles/');
}
}
Lorsque j'utilise la variable $ errors dans mon modèle nommé add.blade.php, elle affiche une erreur variable non définie: $ errors J'ai essayé de résoudre le problème, mais je n'ai pas .Veuillez me dire où je me trompe .add.blad.php
{{ var_dump($errors) }}
Il s’agit d’un problème majeur avec la mise à niveau 5.2. Ce qui se passe, c’est le middleware qui est responsable de rendre cette variable errors
disponible pour toutes vos vues n’est pas utilisé car elle a été déplacée du middleware global au groupe de middleware web
.
Il y a deux façons de résoudre ce problème:
Dans votre fichier kernel.php
(app/Http/Kernel.php), vous pouvez rétablir le middleware \Illuminate\View\Middleware\ShareErrorsFromSession::class
dans la propriété protected $middleware
.
Enveloppez tous vos itinéraires web
avec un groupe d’itinéraires et appliquez-leur le middleware Web:
Route::group(['middleware' => 'web'], function() {
// Place all your web routes here...(Cut all `Route` which are define in `Route file`, paste here)
});
Copié de cet article Laravel 5.2 $ erreurs n'apparaissant pas dans Blade
Poster ceci comme cela pourrait être utile pour les autres,
Comme Praveen l'a mentionné dans la 1ère solution, dans votre fichier Kernel.php
(app/Http/Kernel.php
), déplacez \Illuminate\View\Middleware\ShareErrorsFromSession::class
De $middlewareGroups
vers la propriété protected $middleware
, mais commence à générer l'erreur "Le magasin de session n'est pas défini sur demande"
pour résoudre ce déplacement \Illuminate\Session\Middleware\StartSession::class,
à $middleware property
également.
Cela se produit parce que le fichier ci-dessous n'est pas mis à jour dans le processus de mise à jour de Composer et que la méthode mapWebRoutes
n'est donc pas implémentée.
app/Providers/RouteServiceProvider.php
Copiez ce fichier depuis une nouvelle installation et cela fonctionnera. Mieux, suivez le chemin de mise à niveau sur la documentation.
Il suffit de couper tous vos itinéraires à partir du fichier routes.php et de le coller entre les groupes de middleware 'web', comme ceci:
Pour la version 5.2, déplacez simplement les routes contenant la variable errors vers le groupe de middleware