国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Table des matières
Request表單驗(yàn)證
實(shí)現(xiàn)驗(yàn)證
反饋錯(cuò)誤
多個(gè)驗(yàn)證規(guī)則
其他常用驗(yàn)證規(guī)則
使用Validation
總結(jié)
Maison développement back-end tutoriel php Laravel 5系列教程七:表單驗(yàn)證 Validation

Laravel 5系列教程七:表單驗(yàn)證 Validation

Jun 20, 2016 pm 12:49 PM

原文來自:https://laravist.com/article/15

Laravist是我剛剛上線的Laravel社區(qū),有任何與Laravel相關(guān)的問題可以到這里來問我,我會(huì)盡力去幫大家解決問題,后期會(huì)嘗試錄制一些視頻教程,形式大概是這樣的

https://laravist.com/lesson/1

終于要更新這個(gè)Laravel系列教程的第七篇了,期間去寫了一點(diǎn)其他的東西。

就不說廢話了吧,直接進(jìn)入Form Validation的部分吧。幾乎在每一個(gè)web應(yīng)用當(dāng)中都會(huì)有表單,而有表單基本就離不開表單驗(yàn)證。在laravel中,其實(shí)可以說是有兩種方式來進(jìn)行表單驗(yàn)證:使用Request和使用Validation。下面將分開講這兩部分的內(nèi)容,而且我會(huì)更著重第一種,也更推薦大家使用第一種進(jìn)行表單驗(yàn)證:

Request表單驗(yàn)證

為什么說是會(huì)把精力都放在講解第一種驗(yàn)證方式呢?因?yàn)閭€(gè)人覺得第一種方式在相同的驗(yàn)證條件下,更加易于維護(hù)和可以進(jìn)行代碼重用。而且寫代碼的形式更適用于Laravel和我個(gè)人的使用習(xí)慣:可以使用命令行來生成代碼。也就是可以使用artisan這個(gè)工具:

php artisan make:request StoreArticleRequest

在項(xiàng)目目錄下使用artisan的make:request命令就可以生成一個(gè)用于表單驗(yàn)證Request類了,這個(gè)類我們?cè)谶@里命名為StoreArticleRequest,你也可以以你自己喜歡的方式來命名,但我還是推薦大家在命名的時(shí)候盡量使得名字比較人性化一點(diǎn),這樣會(huì)比較對(duì)于后期再看代碼的時(shí)候有很多好處。這個(gè)命令生成的文件位于app/Http/Requests/這個(gè)文件夾當(dāng)中,我們打開這個(gè)文件來看:

class StoreArticleRequest extends Request{    /**     * Determine if the user is authorized to make this request.     *     * @return bool     */    public function authorize()    {        return false;    }    /**     * Get the validation rules that apply to the request.     *     * @return array     */    public function rules()    {        return [            //        ];    }}

實(shí)現(xiàn)驗(yàn)證

可以看到里面會(huì)有兩個(gè)方法:authorize()和 rules() 。authorize()可以這樣簡(jiǎn)單地理解:我們?cè)谔幚磉@個(gè)表單請(qǐng)求(通常是一個(gè)post請(qǐng)求)的時(shí)候是否是需要進(jìn)行身份驗(yàn)證,這種驗(yàn)證是指:比如A發(fā)表的評(píng)論,B能不能進(jìn)行編輯。如果不能,則保留返回false,如果可以,則修改返回true。那么我們這里的邏輯是:既然是發(fā)表文章,在我們這個(gè)站點(diǎn)注冊(cè)的用戶(如果開放注冊(cè)的話)都是可以發(fā)表文章的,所以我們首先修改authorize()方法,將其返回值改為:return true;。

然后對(duì)于rules()方法,我們需要在這里設(shè)置我們的驗(yàn)證規(guī)則,比如我們可以設(shè)置下面這個(gè)的驗(yàn)證規(guī)則:

public function rules()    {        return [            'title' => 'required',            'content' => 'required'        ];    }

因?yàn)槲覀冊(cè)趧?chuàng)建文章的時(shí)候,我們會(huì)有兩個(gè)提交過來的字段:title和content。這是我們?cè)谠O(shè)計(jì)articles表的時(shí)候設(shè)置的兩個(gè)字段。

然后,上面的驗(yàn)證規(guī)則是:對(duì)于title和content兩個(gè)字段,我們需要用戶為其填充內(nèi)容,不能為空。

既然這里的規(guī)則設(shè)置好之后,我們?cè)撛趺磻?yīng)用起來呢?也就是我們?cè)趺丛趯⑽恼麓嫒霐?shù)據(jù)庫之前進(jìn)行驗(yàn)證呢?很簡(jiǎn)單,我們只需要稍微修改ArticleController的store()方法:

public function store(Requests\StoreArticleRequest $request)    {        $input = $request->all();        //下面增加兩行,順便看看Request::get的使用        $input['intro'] = mb_substr($request->get('content'),0,64);     }   

我們將整個(gè)StoreArticleRequest類的實(shí)例以$request變量傳入store()方法,這個(gè)時(shí)候,laravel
就會(huì)自動(dòng)檢查我們是否需要進(jìn)行表單驗(yàn)證(rules方法有沒有定義驗(yàn)證規(guī)則),如果有需要驗(yàn)證的話,laravel會(huì)首先走驗(yàn)證這條路,如果驗(yàn)證沒有通過,store()方法內(nèi)的代碼不會(huì)被執(zhí)行,而是直接跳轉(zhuǎn)到提交表單的頁面,這里是:http://blog.dev/article/create 這個(gè)頁面。如果所有的驗(yàn)證都通過之后,才會(huì)執(zhí)行store()內(nèi)部的代碼,也就是才會(huì)執(zhí)行到$input = $request->all();這里以及往下的代碼。。。比如我們來試試留空的時(shí)候是什么樣的情況:

反饋錯(cuò)誤

上面的圖片中好像沒有什么變化,但其實(shí)是已經(jīng)提交了一次了,但是又馬上跳轉(zhuǎn)回來了。我們可以使用下面的方式來驗(yàn)證一下:

@if($errors->any())        <ul class="alert alert-danger">            @foreach($errors->all() as $error)                <li>{{ $error }}</li>            @endforeach        </ul>@endif

在create.blade.php這個(gè)視圖文件中增加上面的代碼,我這里是放在{!! Form::close() !!}后面。這里的意思大概就是,如果有任何表單驗(yàn)證的錯(cuò)誤消息,我們就講這個(gè)信息打印出來反饋給用戶。如果沒有,則不會(huì)顯示信息。我們?cè)賮碓囈幌拢?/p>

這時(shí)候可以看到,我們?cè)诒韱悟?yàn)證沒有通過的時(shí)候,在頁面顯示了相對(duì)應(yīng)的錯(cuò)誤信息。如果沒有錯(cuò)誤,就創(chuàng)建一篇文章。

tips:如果你不想錯(cuò)誤信息為英文,可以到resources/lang/en/validation.php修改,或者你直接創(chuàng)建一個(gè)新的語言文件包。

多個(gè)驗(yàn)證規(guī)則

OK,這里,我們基本是將這個(gè)這個(gè)驗(yàn)證流程走通了。但是,在實(shí)際的開發(fā)中,我們的驗(yàn)證并不都是這個(gè)簡(jiǎn)單:要是我們要對(duì)一個(gè)字段設(shè)置多個(gè)驗(yàn)證規(guī)則呢?比如我們希望文章的title最少不能少于三個(gè)字節(jié)長(zhǎng)度呢?我們可以這樣,在rules()方法中:

'title' => 'required|min:3',

在laravel中,我們使用|將多個(gè)規(guī)則分開,:表示規(guī)則的值。其實(shí)這里你也可以使用數(shù)組的,但是我還是推薦大家像上面這樣寫,簡(jiǎn)潔明了。

其他常用驗(yàn)證規(guī)則

至于更多地驗(yàn)證規(guī)則,比如注冊(cè)的時(shí)候,驗(yàn)證一個(gè)email和確認(rèn)密碼的時(shí)候,我們?cè)趺葱枰趺磳懙哪兀?/p>

'email'=>'required|email','password'=>'required|min:6|confirmed','password_confirmation' => 'required|min:6'

上面我直接給出這兩個(gè)常用場(chǎng)景的最常見的寫法,email就代表驗(yàn)證所填的信息是否是一個(gè)正確地郵箱格式了,至于確認(rèn)密碼就使用confirmed來指定,這里注意是confirmed而不是confirme。而且第二次輸入密碼的字段需要寫成password_confirmation這個(gè)形式,也就是在視圖中,我們會(huì)有類似這樣的input表單:

<input type="password" name="password" /><input type="password" name="password_confirmation" />

關(guān)于更多驗(yàn)證規(guī)則,參考官方文檔:

http://laravel.com/docs/5.1/validation

使用Validation

使用這個(gè)之前可以將store(Requests\StoreArticleRequest $request)中的變量去掉

使用Validation的時(shí)候,多用于驗(yàn)證一些簡(jiǎn)單的表單驗(yàn)證。這里演示直接寫于ArticleController當(dāng)中,直接使用Validator::make(),使用方式為Validator::make(array $request,array $rules),比如說我們的例子可以在store()中寫成:

$input = Request::all();$validator = Validator::make($input, [    'title' => 'required|min:3',    'body' => 'required',]);   

然后可以使用下面這樣的方式來檢查驗(yàn)證有沒有通過:

 if ($validator->fails())  {            }

驗(yàn)證通過之后,我們才進(jìn)行下一步操作,比如將數(shù)據(jù)存入數(shù)據(jù)庫。一個(gè)基本的Validation流程就完成了,而且關(guān)于Validation的部分,我也只想介紹到這里,因?yàn)槲視?huì)安利大家使用第一種方式:Request。

tips:這兩種方式的背后都是使用一樣的驗(yàn)證機(jī)制。

總結(jié)

這里就基本將基礎(chǔ)的表單驗(yàn)證說完了,下一節(jié)我準(zhǔn)說說queryScope和SetAttributes的使用,這兩個(gè)對(duì)于我們的數(shù)據(jù)入庫的預(yù)處理和代碼重用都很有幫助,所以下次會(huì)先說這兩個(gè)知識(shí)點(diǎn):我們會(huì)先對(duì)published_at這個(gè)字段的設(shè)置和使用發(fā)揮出來,到時(shí)候你就知道設(shè)置這個(gè)字段的好處了。

最后:Happy Hacking

Déclaration de ce site Web
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

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1502
276
Porce de variable PHP expliquée Porce de variable PHP expliquée Jul 17, 2025 am 04:16 AM

Les problèmes et les solutions courants pour la portée de la variable PHP incluent: 1. La variable globale ne peut pas être accessible dans la fonction, et elle doit être transmise en utilisant le mot-clé ou le paramètre global; 2. La variable statique est déclarée avec statique, et elle n'est initialisée qu'une seule fois et la valeur est maintenue entre plusieurs appels; 3. Des variables hyperglobales telles que $ _get et $ _post peuvent être utilisées directement dans n'importe quelle portée, mais vous devez faire attention au filtrage s?r; 4. Les fonctions anonymes doivent introduire des variables de portée parents via le mot clé Utiliser, et lorsque vous modifiez les variables externes, vous devez passer une référence. La ma?trise de ces règles peut aider à éviter les erreurs et à améliorer la stabilité du code.

Comment gérer les téléchargements de fichiers en toute sécurité dans PHP? Comment gérer les téléchargements de fichiers en toute sécurité dans PHP? Jul 08, 2025 am 02:37 AM

Pour gérer en toute sécurité les téléchargements de fichiers PHP, vous devez vérifier la source et taper, contr?ler le nom et le chemin du fichier, définir les restrictions du serveur et traiter les fichiers multimédias deux fois. 1. Vérifiez la source de téléchargement pour empêcher le CSRF via le jeton et détecter le type de mime réel via FINFO_FILE en utilisant le contr?le de liste blanche; 2. Renommez le fichier à une cha?ne aléatoire et déterminez l'extension pour la stocker dans un répertoire non Web en fonction du type de détection; 3. La configuration PHP limite la taille de téléchargement et le répertoire temporaire Nginx / Apache interdit l'accès au répertoire de téléchargement; 4. La bibliothèque GD résait les images pour effacer des données malveillantes potentielles.

Commentant le code en php Commentant le code en php Jul 18, 2025 am 04:57 AM

Il existe trois méthodes courantes pour le code de commentaire PHP: 1. Utiliser // ou # pour bloquer une ligne de code, et il est recommandé d'utiliser //; 2. Utiliser /.../ pour envelopper des blocs de code avec plusieurs lignes, qui ne peuvent pas être imbriquées mais peuvent être croisées; 3. Compétences combinées Commentaires tels que l'utilisation / if () {} / pour contr?ler les blocs logiques, ou pour améliorer l'efficacité avec les touches de raccourci de l'éditeur, vous devez prêter attention aux symboles de fermeture et éviter les nidification lorsque vous les utilisez.

Comment les générateurs fonctionnent-ils en PHP? Comment les générateurs fonctionnent-ils en PHP? Jul 11, 2025 am 03:12 AM

AgeneratorInphpisamemory-EfficientwaytoterateOrgedatasetsByyieldingValuesonEatatimeIntedofreturningThemallAtonce.1.GeneratorsUsEtheieldKeywordToproduceValuesondemand, ReducingMemoryUsage.2.TheyAreusefulForHandlingBigloops, ReadingLargeFiles, OR OR.

Conseils pour écrire des commentaires PHP Conseils pour écrire des commentaires PHP Jul 18, 2025 am 04:51 AM

La clé pour rédiger des commentaires PHP est de clarifier l'objectif et les spécifications. Les commentaires devraient expliquer "pourquoi" plut?t que "ce qui a été fait", en évitant la redondance ou trop de simplicité. 1. Utilisez un format unifié, tel que DocBlock (/ * /) pour les descriptions de classe et de méthode afin d'améliorer la lisibilité et la compatibilité des outils; 2. Soulignez les raisons de la logique, telles que pourquoi les sauts JS doivent être sortis manuellement; 3. Ajoutez une description d'une vue d'ensemble avant le code complexe, décrivez le processus dans les étapes et aidez à comprendre l'idée globale; 4. Utilisez TODO et FIXME Rationalement pour marquer des éléments et des problèmes de taches pour faciliter le suivi et la collaboration ultérieurs. De bonnes annotations peuvent réduire les co?ts de communication et améliorer l'efficacité de la maintenance du code.

Apprendre PHP: un guide du débutant Apprendre PHP: un guide du débutant Jul 18, 2025 am 04:54 AM

Toléarnphpeffective, startBySettingUpAlocalServerERironmentUsingToolsLILYXAMPPANDACODEDITERLIGHILLEVSCODE.1) INSTRUSITIONXAMPFORAPACHE, MYSQL, ANDPHP.2) USACODEDEDITORFORSYNTAXSUPPORT.3)

Comment accéder à un caractère dans une cha?ne par index en php Comment accéder à un caractère dans une cha?ne par index en php Jul 12, 2025 am 03:15 AM

En PHP, vous pouvez utiliser des crochets ou des accolades bouclées pour obtenir des caractères d'index spécifiques à la cha?ne, mais les crochets sont recommandés; L'index commence à partir de 0 et l'accès à l'extérieur de la plage renvoie une valeur nulle et ne peut pas se voir attribuer une valeur; MB_substr est nécessaire pour gérer les caractères multi-octets. Par exemple: $ str = "Hello"; echo $ str [0]; sortie h; et les caractères chinois tels que MB_substr ($ str, 1,1) doivent obtenir le résultat correct; Dans les applications réelles, la longueur de la cha?ne doit être vérifiée avant le boucle, les cha?nes dynamiques doivent être vérifiées pour la validité et les projets multilingues recommandent d'utiliser des fonctions de sécurité multi-octets uniformément.

Tutoriel d'installation rapide PHP Tutoriel d'installation rapide PHP Jul 18, 2025 am 04:52 AM

Toinstallphpquickly, usexAmpPonWindowsorHomebrewonMacos.1.onwindows, downloadAndInstallxAmppp, selectComponents, startapache et placefilesInhtdocs.2.

See all articles