Maison  >  Article  >  développement back-end  >  Validation des pages et des formulaires pour Laravel 4

Validation des pages et des formulaires pour Laravel 4

不言
不言original
2018-06-13 15:53:401569parcourir

Cet article présente principalement la validation des pages et des formulaires sur Laravel 4. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Ce tutoriel est la fin de cette série. Dans cet article, ce que nous devons faire, c'est les fonctions de gestion détaillées des pages, la validation des formulaires et l'utilisation approfondie des espaces de noms, ainsi qu'un composant de notification mieux utilisé, et organiser un gros travail simple.

1. Fonction de gestion des pages de création

Exécuter la commande :

php artisan generate:controller admin/PagesController

Modifier le contenu de PagesController.php :

<?php
namespace App\Controllers\Admin;
use Page;
use Input, Notification, Redirect, Sentry, Str;
use App\Services\Validators\PageValidator;
class PagesController extends \BaseController {
    public function index()
    {
        return \View::make(&#39;admin.pages.index&#39;)->with(&#39;pages&#39;, Page::all());
    }
    public function show($id)
    {
        return \View::make(&#39;admin.pages.show&#39;)->with(&#39;page&#39;, Page::find($id))->withAuthor(Sentry::findUserById(Page::find($id)->user_id)->name);
    }
    public function create()
    {
        return \View::make(&#39;admin.pages.create&#39;);
    }
    public function store()
    {
        $validation = new PageValidator;
        if ($validation->passes())
        {
      $page          = new Page;
      $page->title   = Input::get(&#39;title&#39;);
      $page->body    = Input::get(&#39;body&#39;);
      $page->user_id = Sentry::getUser()->id;
            $page->save();
            Notification::success(&#39;新增页面成功!&#39;);
            return Redirect::route(&#39;admin.pages.edit&#39;, $page->id);
        }
        return Redirect::back()->withInput()->withErrors($validation->errors);
    }
    public function edit($id)
    {
        return \View::make(&#39;admin.pages.edit&#39;)->with(&#39;page&#39;, Page::find($id));
    }
    public function update($id)
    {
        $validation = new PageValidator;
        if ($validation->passes())
        {
      $page          = Page::find($id);
      $page->title   = Input::get(&#39;title&#39;);
      $page->body    = Input::get(&#39;body&#39;);
      $page->user_id = Sentry::getUser()->id;
            $page->save();
            Notification::success(&#39;更新页面成功!&#39;);
            return Redirect::route(&#39;admin.pages.edit&#39;, $page->id);
        }
        return Redirect::back()->withInput()->withErrors($validation->errors);
    }
    public function destroy($id)
    {
        $page = Page::find($id);
        $page->delete();
        Notification::success(&#39;删除成功!&#39;);
        return Redirect::route(&#39;admin.pages.index&#39;);
    }
}

Ensuite, ouvrez la page http://localhost:8000/admin et connectez-vous avec le compte et le mot de passe qui ont été générés auparavant. Nous obtiendrons une erreur :

Class App\Controllers\Admin\PagesController does not exist

Ce fichier existe évidemment déjà, pourquoi. Laravel signale-t-il une erreur ? ! La raison est dans le deuxième tutoriel, je vais donc l'expliquer directement ici. Parce que cette classe ne se trouve pas dans l'espace de noms de niveau supérieur et que nous n'avons pas dit à Laravel que nous avions ajouté une nouvelle classe dans le sous-espace de noms. Disons-le maintenant :

composer dump-autoload

OK, actualisez, nous aurons à nouveau l'erreur suivante :

View [admin.pages.index] not found.

À ce stade, copiez l'intégralité du dossier des pages dans ma barre d'affichage.

Actualiser. Vous obtiendrez l'erreur suivante :

Class &#39;Notification&#39; not found

C'est parce que nous n'avons pas installé le package composer, edvinaskrucas/notification, veuillez installer vous-même la version 3.0.1 (4 est préparé pour Laravel 5), c'est le premier Trois petites missions. Il doit être placé dans require. Les packages dans require-dev ne sont utilisés que pendant le développement.

La notification ici est le composant de notification le plus utile.

Une fois que cela est empaqueté, exécutez :

composer dump-autoload

Ajoutez ensuite les deux lignes suivantes aux emplacements appropriés dans config/app.php :

&#39;Krucas\Notification\NotificationServiceProvider&#39;
&#39;Notification&#39; => &#39;Krucas\Notification\Facades\Notification&#39;

Beaucoup de gens ne comprennent pas la position appropriée, ce qui conduit de nombreuses personnes à faire des erreurs. La solution est également très simple

Actualisez, si vous voyez l'interface suivante :

<.>


Félicitations~ La page de gestion de Pages est terminée !

2. Validation de formulaire

Laravel fournit une fonction de validation de formulaire native et très simple à utiliser, mais parfois les règles de validation doivent être réutilisées, nous utiliserons donc les puissants espaces de noms sont utilisés pour réaliser la réutilisation du code, et en même temps, cela démontrera que les puissantes fonctions de composantisation et le découplage de modules apportés par les espaces de noms PHP en dehors de Laravel ont pris du retard.

Créez un nouveau dossier à deux niveaux app/services/validators et ajoutez-le au chargement automatique > classmap dans composer.json :

"app/services"
Cela dit à composer : venez me chercher ci-dessous Fusionnez tous les fichiers et tous les fichiers des sous-dossiers dans votre arborescence d'espaces de noms ! Cela permet aux classes sous app/services de déclarer leur propre espace de noms, et les fichiers des sous-dossiers peuvent également déclarer qu'ils appartiennent au sous-espace de noms. Ce dossier hébergera notre cluster de validation de formulaire, et bien sûr de nombreux autres composants et modules, pour un découplage complet.

Une fois l'ajout terminé, créez un nouveau fichier app/services/validators/Validator.php :

<?php
namespace App\Services\Validators;
abstract class Validator {
    protected $data;
    public $errors;
    public static $rules;
    public function __construct($data = null)
    {
        $this->data = $data ?: \Input::all();
    }
    public function passes()
    {
        $validation = \Validator::make($this->data, static::$rules);
        if ($validation->passes()) return true;
        $this->errors = $validation->messages();
        return false;
    }
}
Nouveau fichier app/services/validators/PageValidator.php :

<?php
namespace App\Services\Validators;
class PageValidator extends Validator {
    public static $rules = array(
        &#39;title&#39; => &#39;required&#39;,
        &#39;body&#39;  => &#39;required&#39;,
    );
}
Puis lancez :

composer dump-autoload
A ce moment, vous pouvez tenter toutes les opérations sur toute la page ! Créer, modifier, visualiser, supprimer À ce stade, la partie gestion des pages est terminée !

Gros devoir : A l'heure actuelle, la partie gestion des Pages est terminée, mais la partie gestion des Articles n'a toujours rien. Essayez d'imiter le code de Pages et de compléter un système de gestion similaire à Pages. Astuce : Incluez la validation du contrôleur, de la vue et du formulaire. Une fois que vous aurez complété la partie gestion des articles, vous pourrez réellement démarrer avec Laravel !


Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Utiliser Laravel pour générer l'adresse de l'avatar Gravatar

Comment résoudre le problème de l'échec du middleware d'accélérateur de Laravel

Comment utiliser la fonction mb_detect_encoding en PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn