<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>バリデーション &#8211; ケケンタの独学ITブログ</title>
	<atom:link href="https://kekenta-it-blog.com/tag/%e3%83%90%e3%83%aa%e3%83%87%e3%83%bc%e3%82%b7%e3%83%a7%e3%83%b3/feed/" rel="self" type="application/rss+xml" />
	<link>https://kekenta-it-blog.com</link>
	<description>プログラミングやWeb制作の情報を発信</description>
	<lastBuildDate>Tue, 18 Mar 2025 01:54:29 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://kekenta-it-blog.com/wp-content/uploads/2023/07/cropped-KEKENTA-BLOG-32x32.png</url>
	<title>バリデーション &#8211; ケケンタの独学ITブログ</title>
	<link>https://kekenta-it-blog.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>【Laravel11】バリデーションの実装方法やエラーメッセージのカスタマイズ</title>
		<link>https://kekenta-it-blog.com/laravel-ver11-validation/</link>
					<comments>https://kekenta-it-blog.com/laravel-ver11-validation/#respond</comments>
		
		<dc:creator><![CDATA[ケケンタ]]></dc:creator>
		<pubDate>Sun, 29 Sep 2024 05:03:22 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Webアプリ]]></category>
		<category><![CDATA[Laravel11]]></category>
		<category><![CDATA[バリデーション]]></category>
		<category><![CDATA[フレームワーク]]></category>
		<category><![CDATA[リクエストフォーム]]></category>
		<guid isPermaLink="false">https://kekenta-it-blog.com/?p=11686</guid>

					<description><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2024/09/eye-catch__laravel-ver11-validation__11686-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>Laravelではバリデーションを簡単に実装する仕組みが用意されています。 この記事ではLaravelバージョン11でバリデーションを実装する方法をご紹介します。 バリデーションとは？ まずは「そもそもバリデーションとは [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://kekenta-it-blog.com/wp-content/uploads/2024/09/eye-catch__laravel-ver11-validation__11686-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p class="wp-block-paragraph">Laravelではバリデーションを簡単に実装する仕組みが用意されています。</p>



<p class="wp-block-paragraph">この記事では<strong><span class="swl-marker mark_yellow">Laravelバージョン11でバリデーションを実装する方法</span></strong>をご紹介します。</p>



<div class="swell-block-capbox cap_box"><div class="cap_box_ttl"><span><span data-icon="LsLightbulb" data-id="0" style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMzIgNDYuNUgxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyek00MS43IDE1LjlDNDEuMyAxMyA0MCAxMC4zIDM4LjIgOCAzNC41IDMuMiAyOSAuOCAyMy4xIDEgMTQgMS40IDYuNSA4LjkgNiAxOGMtLjMgNiAyLjQgMTEuNyA3LjIgMTUuNC41LjQuOC45LjggMS41djEuNmMwIDIuMiAxLjggNCA0IDRoMTJjMi4yIDAgNC0xLjggNC00VjM1YzAtLjYuMy0xLjIuOS0xLjcgNS4zLTQgOC0xMC42IDYuOC0xNy40em0tNy4xIDEuN2gtLjNjLS43IDAtMS4zLS41LTEuNS0xLjItLjctMy4yLTMuMi01LjctNi40LTYuMy0uOC0uMS0xLjQtLjktMS4yLTEuN3MuOS0xLjQgMS43LTEuMmM0LjQuOCA4IDQuMiA4LjkgOC42LjEuOC0uNCAxLjYtMS4yIDEuOHoiPjwvcGF0aD48L3N2Zz4=)" aria-hidden="true" class="swl-inline-icon"> </span><strong>この記事で分かること</strong></span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-check_list -list-under-dashed">
<li>Laravelバージョン11でバリデーションを実装する基本的な方法</li>



<li>バリデーションのエラーメッセージのカスタマイズ方法</li>



<li>フォームリクエストを利用して高度なバリデーションカスタマイズを行う方法</li>
</ul>
</div></div>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>Webアプリを開発するならバリデーション実装は必須です！<br>この記事が少しでもお役に立てば何よりです。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/laravel-ver11-gate-policy/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【Laravel11】Gate（ゲート）とPolicy（ポリシー）で「認可」機能を実装する</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/laravel-ver11-seeder-factory/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【Laravel11】シーダとファクトリでテストデータを一括作成する方法</span>
			</a>
		</div>

<div class="swell-block-postLink">			<a href="https://kekenta-it-blog.com/laravel11-change-dbtable-col-type/" class="c-blogLink -internal" data-style="text">
				<!-- <i class="c-blogLink__icon icon-link" role="presentation"></i> -->
				<span class="c-blogLink__icon">
					<svg xmlns="http://www.w3.org/2000/svg" class="swl-svg-link __svg" width="1em" height="1em" viewBox="0 0 48 48" role="img" aria-hidden="true" focusable="false"><path d="M21.2 30.2c-.5 0-1-.2-1.4-.6l-.7-.7c-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l7.1-7.1c2.3-2.3 5.3-3.5 8.5-3.5s6.2 1.2 8.5 3.5c4.7 4.7 4.7 12.3 0 17l-3.5 3.5c-.8.8-2 .8-2.8 0-.8-.8-.8-2 0-2.8l3.5-3.5c3.1-3.1 3.1-8.2 0-11.3-1.5-1.5-3.5-2.3-5.7-2.3-2.1 0-4.2.8-5.7 2.3l-7.1 7.1c-1.5 1.5-2.3 3.5-2.3 5.7s.8 4.2 2.3 5.7l.7.7c.8.8.8 2 0 2.8-.4.3-.9.5-1.4.5z" /><path d="M13.4 46.6c-3.1 0-6.1-1.2-8.5-3.5-2.3-2.3-3.5-5.3-3.5-8.5s1.2-6.2 3.5-8.5l3.5-3.5c.8-.8 2-.8 2.8 0 .8.8.8 2 0 2.8l-3.5 3.5c-1.5 1.5-2.3 3.5-2.3 5.7 0 2.1.8 4.2 2.3 5.7 3.1 3.1 8.2 3.1 11.3 0l7.1-7.1c1.5-1.5 2.3-3.5 2.3-5.7 0-2.1-.8-4.2-2.3-5.7l-.7-.7c-.8-.8-.8-2 0-2.8.8-.8 2-.8 2.8 0l.7.7c2.3 2.3 3.5 5.3 3.5 8.5s-1.2 6.2-3.5 8.5l-7.1 7.1c-2.3 2.3-5.3 3.5-8.4 3.5z" /></svg>				</span>
				<span class="c-blogLink__text">【Laravel】データベーステーブルのカラムタイプを変更する方法【マイグレーション】</span>
			</a>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2025/03/eye-catch__school-php-and-wp__14099-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/school-php-and-wp/">PHPやWordPressを学ぶのにおすすめのプログラミングスクール【７選】</a>
						<span class="p-blogCard__excerpt">僕はこれまで独学でPHPを学習してきました。結論から言えば、それでもPHPを習得することはできました。 しかし、それに費やした累計学習期間は1年ほど。モチベーション&#8230;</span>					</div>
				</div>
			</div>
		</div>


<h2 class="wp-block-heading">バリデーションとは？</h2>



<p class="wp-block-paragraph">まずは「そもそもバリデーションとは何か？」、　「その役割とは？」についてお伝えします。</p>



<div class="swell-block-capbox cap_box" data-colset="col1"><div class="cap_box_ttl"><span><span data-icon="LsLightbulb" data-id="0" style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMzIgNDYuNUgxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyek00MS43IDE1LjlDNDEuMyAxMyA0MCAxMC4zIDM4LjIgOCAzNC41IDMuMiAyOSAuOCAyMy4xIDEgMTQgMS40IDYuNSA4LjkgNiAxOGMtLjMgNiAyLjQgMTEuNyA3LjIgMTUuNC41LjQuOC45LjggMS41djEuNmMwIDIuMiAxLjggNCA0IDRoMTJjMi4yIDAgNC0xLjggNC00VjM1YzAtLjYuMy0xLjIuOS0xLjcgNS4zLTQgOC0xMC42IDYuOC0xNy40em0tNy4xIDEuN2gtLjNjLS43IDAtMS4zLS41LTEuNS0xLjItLjctMy4yLTMuMi01LjctNi40LTYuMy0uOC0uMS0xLjQtLjktMS4yLTEuN3MuOS0xLjQgMS43LTEuMmM0LjQuOCA4IDQuMiA4LjkgOC42LjEuOC0uNCAxLjYtMS4yIDEuOHoiPjwvcGF0aD48L3N2Zz4=)" aria-hidden="true" class="swl-inline-icon"> </span><strong>バリデーションとは？</strong></span></div><div class="cap_box_content">
<p class="wp-block-paragraph">バリデーションとは、簡単にいうと<strong>ユーザの入力値が意図した値になっているかどうかを検証すること</strong>です。</p>
</div></div>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<p class="wp-block-paragraph">そんなバリデーションの<strong>具体的な役割</strong>は以下の通りです。</p>



<div class="swell-block-capbox cap_box"><div class="cap_box_ttl"><span><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMzIgNDYuNUgxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyek00MS43IDE1LjlDNDEuMyAxMyA0MCAxMC4zIDM4LjIgOCAzNC41IDMuMiAyOSAuOCAyMy4xIDEgMTQgMS40IDYuNSA4LjkgNiAxOGMtLjMgNiAyLjQgMTEuNyA3LjIgMTUuNC41LjQuOC45LjggMS41djEuNmMwIDIuMiAxLjggNCA0IDRoMTJjMi4yIDAgNC0xLjggNC00VjM1YzAtLjYuMy0xLjIuOS0xLjcgNS4zLTQgOC0xMC42IDYuOC0xNy40em0tNy4xIDEuN2gtLjNjLS43IDAtMS4zLS41LTEuNS0xLjItLjctMy4yLTMuMi01LjctNi40LTYuMy0uOC0uMS0xLjQtLjktMS4yLTEuN3MuOS0xLjQgMS43LTEuMmM0LjQuOCA4IDQuMiA4LjkgOC42LjEuOC0uNCAxLjYtMS4yIDEuOHoiPjwvcGF0aD48L3N2Zz4=)" data-icon="LsLightbulb" data-id="0" aria-hidden="true" class="swl-inline-icon"> </span><strong>バリデーションの役割</strong></span></div><div class="cap_box_content">
<ul class="wp-block-list -list-under-dashed is-style-check_list">
<li>ユーザの入力値を制御することでWebアプリにおけるデータの整合性を保つ</li>



<li>悪意あるユーザからのセキュリティ攻撃を予防する</li>
</ul>
</div></div>



<p class="wp-block-paragraph">バリデーションを実装することでWebアプリを安全に稼働できます。</p>



<p class="is-style-icon_info wp-block-paragraph">逆にいえば、バリデーションを実装しないと、悪意あるユーザによるセキュリティ攻撃を素通りさせることになり、<strong><span class="swl-marker mark_orange">重要情報の漏洩などの被害が発生する危険性が高まります。</span></strong></p>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h2 class="wp-block-heading">【基本】バリデーションの実装方法</h2>



<p class="is-style-bg_stripe wp-block-paragraph">本章より<strong><span class="swl-marker mark_yellow">Laravelバージョン11でバリデーションを実装する方法</span></strong>を解説します。</p>



<p class="wp-block-paragraph">バリデーションの実装方法を解説する上で、<strong>入力フォーム</strong>や<strong>そこからの値を受け取りデータベースへ保存する処理</strong>などがあると話が進めやすいため、この記事では以下の例をイメージしながら解説していきます。</p>



<p class="is-style-balloon_box wp-block-paragraph"><strong>この記事で扱うWebアプリと処理の例</strong></p>



<div class="wp-block-group has-border -border01"><div class="wp-block-group__inner-container">
<ul class="wp-block-list is-style-check_list">
<li>TODOアプリ</li>



<li>タスクの登録処理</li>
</ul>
</div></div>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>上記の例にそって、以下よりルーティングやコントローラーなどのソースコードをご紹介していきます！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading">ルーティング</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="web.php" data-lang="PHP"><code>// タスク登録ページを表示するルーティング
Route::get(&#39;/tasks/create&#39;, [TasksController::class, &#39;create&#39;])-&gt;name(&#39;tasks.create&#39;);

// タスク登録処理を実行するルーティング
Route::post(&#39;/tasks/create&#39;, [TasksController::class, &#39;store&#39;]);</code></pre></div>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading">バリデーションルールの設定</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="TasksController.php" data-lang="PHP" data-line="14-17"><code>/*
 * タスク登録ページ（create.blade.php）を表示
 */
public function create()
{
    return view(&#39;tasks.create&#39;);
}

/*
 * タスク登録処理
 */
public function store(Request $request, Task $task)
{
    // バリデーションルール（★）
    $validated = $request-&gt;validate([
        // 【形式】&#39;$requestのキー名（name属性名）&#39; =&gt; &#39;ルール１|ルール２……&#39;,
        &#39;title&#39; =&gt; &#39;required|max:50&#39;,
    ]);

    // タスク登録処理
    $task-&gt;title = $request-&gt;title;
    $task-&gt;save();

    return redirect()-&gt;route(&#39;tasks.index&#39;);  // タスク一覧ページへリダイレクト（※本記事ではページファイル省略）
}</code></pre></div>



<p class="wp-block-paragraph">上記の例では、<code>title</code>に<strong><span class="swl-marker mark_blue">以下２つのバリデーションルールを適用</span></strong>しています。</p>



<div class="swell-block-capbox cap_box is-style-onborder_ttl2"><div class="cap_box_ttl"><span><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMzIgNDYuNUgxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyek00MS43IDE1LjlDNDEuMyAxMyA0MCAxMC4zIDM4LjIgOCAzNC41IDMuMiAyOSAuOCAyMy4xIDEgMTQgMS40IDYuNSA4LjkgNiAxOGMtLjMgNiAyLjQgMTEuNyA3LjIgMTUuNC41LjQuOC45LjggMS41djEuNmMwIDIuMiAxLjggNCA0IDRoMTJjMi4yIDAgNC0xLjggNC00VjM1YzAtLjYuMy0xLjIuOS0xLjcgNS4zLTQgOC0xMC42IDYuOC0xNy40em0tNy4xIDEuN2gtLjNjLS43IDAtMS4zLS41LTEuNS0xLjItLjctMy4yLTMuMi01LjctNi40LTYuMy0uOC0uMS0xLjQtLjktMS4yLTEuN3MuOS0xLjQgMS43LTEuMmM0LjQuOCA4IDQuMiA4LjkgOC42LjEuOC0uNCAxLjYtMS4yIDEuOHoiPjwvcGF0aD48L3N2Zz4=)" data-icon="LsLightbulb" data-id="0" aria-hidden="true" class="swl-inline-icon"> </span><strong>上記のソースコードで適用しているバリデーションルール</strong></span></div><div class="cap_box_content">
<ul class="wp-block-list is-style-num_circle -list-under-dashed">
<li>required（入力必須）</li>



<li>max:50（50文字まで入力許可）</li>
</ul>
</div></div>



<p class="wp-block-paragraph">このように、Laravel11では<strong><span class="swl-marker mark_yellow">データベースへの保存処理の前にバリデーションルールを記述する</span></strong>ことで、そのデータに対して簡単にバリデーションを実装することが可能です。</p>



<p class="is-style-icon_pen wp-block-paragraph">バリデーションエラーが発生した際に出力する<strong>エラーメッセージ</strong>については<a href="#anc-err-print">次節</a>で解説します。</p>



<p class="is-style-icon_book wp-block-paragraph">【日本語ドキュメント】<a href="https://readouble.com/laravel/11.x/ja/validation.html">https://readouble.com/laravel/11.x/ja/validation.html</a><br>参照項目：「使用可能なバリデーションルール」</p>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading" id="anc-err-print">エラーメッセージの出力</h3>



<p class="wp-block-paragraph">続いて、バリデーションによって入力エラーが発生したときに出力する<strong>エラーメッセージ</strong>について解説します。</p>



<p class="is-style-icon_info wp-block-paragraph"><strong><span class="swl-marker mark_orange">Laravel11では日本語版エラーメッセージ用ファイルがデフォルトで用意されていません。</span></strong><br>そのため、エラーメッセージを日本語で出力させるためには、後述する<a href="#anc-err-custom">エラー内容をカスタマイズする</a>の解説内容もあわせて対応する必要があります。</p>



<p class="wp-block-paragraph"><strong><span class="swl-marker mark_yellow">エラーメッセージの出力方法</span></strong>は<strong>大きく２つ</strong>あります。</p>



<div class="swell-block-capbox cap_box"><div class="cap_box_ttl"><span><strong>バリデーションのエラーメッセージを出力する「２つ」の方法</strong></span></div><div class="cap_box_content">
<ul class="wp-block-list -list-under-dashed is-style-check_list">
<li>エラーメッセージを項目ごとにひとつずつ出力する</li>



<li>複数項目のエラーメッセージを一か所にまとめて出力する</li>
</ul>
</div></div>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<p class="is-style-balloon_box wp-block-paragraph"><strong>方法①　エラーメッセージを項目ごとにひとつずつ出力する</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="create.blade.php" data-lang="PHP"><code>&lt;form action=&quot;{{ route(&#39;tasks.create&#39;) }}&quot; method=&quot;post&quot;&gt;
    @csrf
    &lt;p&gt;
        @error(&#39;title&#39;)
            &lt;div class=&quot;alert alert-danger&quot;&gt;{{ $message }}&lt;/div&gt;
        @enderror
        &lt;label for=&quot;title&quot;&gt;タイトル&lt;/label&gt;
        &lt;input type=&quot;text&quot; name=&quot;title&quot; value=&quot;{{ old(&#39;title&#39;) }}&quot;&gt;
    &lt;/p&gt;
    &lt;input type=&quot;submit&quot; value=&quot;登録&quot;&gt;
&lt;/form&gt;</code></pre></div>



<p class="is-style-big_icon_check wp-block-paragraph"><code>@error('DB上のカラム名')</code>を使用することで、該当項目のバリデーションエラーが発生したときにエラーメッセージを出力することが可能です。<br><br>また、value属性に<code>old('name属性の値')</code>のように記述しておくことで、エラー発生時に入力されていた値がフォームに保持されるようになります。<br>※<code>old('name属性の値')</code>が無いとエラーが発生する度に入力内容が消えてしまい、再入力の手間が増えます。</p>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<p class="is-style-balloon_box wp-block-paragraph"><strong>方法②　複複数項目のエラーメッセージを一か所に出力する</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="create.blade.php" data-lang="PHP"><code>@if ($errors-&gt;any())
    &lt;div class=&quot;alert alert-danger&quot;&gt;
        &lt;ul&gt;
            @foreach ($errors-&gt;all() as $error)
                &lt;li&gt;{{ $error }}&lt;/li&gt;
            @endforeach
        &lt;/ul&gt;
    &lt;/div&gt;
@endif
&lt;form action=&quot;{{ route(&#39;tasks.create&#39;) }}&quot; method=&quot;post&quot;&gt;
    @csrf
    &lt;p&gt;
        &lt;label for=&quot;title&quot;&gt;タイトル&lt;/label&gt;
        &lt;input type=&quot;text&quot; name=&quot;title&quot; value=&quot;{{ old(&#39;title&#39;) }}&quot;&gt;
    &lt;/p&gt;
    &lt;input type=&quot;submit&quot; value=&quot;登録&quot;&gt;
&lt;/form&gt;</code></pre></div>



<p class="is-style-big_icon_check wp-block-paragraph"><code>@if ($errors-&gt;any())</code>でエラーメッセージの有無をチェックしています。<br>もしバージョンエラーがあれば、<code>@foreach ($errors-&gt;all() as $error)</code>でループを回して、エラーメッセージをひとつずつ出力します。<br><br>また、value属性に<code>old('name属性の値')</code>のように記述しておくことで、エラー発生時に入力されていた値がフォームに保持されるようになります。<br>※<code>old('name属性の値')</code>が無いとエラーが発生する度に入力内容が消えてしまい、再入力の手間が増えます。</p>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<p class="wp-block-paragraph">このように、バリデーションエラーによるエラーメッセージの出力方法は大きく２つあります。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>ただ、エラーが発生した項目ごとにエラーメッセージを出力した方が、ユーザにとっても分かりやすいと思うので、個人的には<strong>①の方法を使用する機会が多いのではないか</strong>と思っています。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h2 class="wp-block-heading" id="anc-err-custom">エラー内容をカスタマイズする</h2>



<p class="is-style-icon_info wp-block-paragraph">バージョンによりますが、前述したようにLaravel11ではデフォルトだと<strong>バリデーションのエラーメッセージ用のファイルが用意されていません。</strong></p>



<p class="wp-block-paragraph">本章では、そのファイルの用意方法を含め、<strong><span class="swl-marker mark_yellow">エラーメッセージ・項目名のカスタマイズ方法</span></strong>を解説します。</p>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading">STEP１　日本語向けのバリデーション用ファイルを用意する</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>php artisan lang:publish</code></pre></div>



<p class="wp-block-paragraph">上記のコマンドを実行すると、プロジェクトディレクトリ直下に<code class="dir_name">lang/en</code>ディレクトリが生成されます。</p>



<p class="wp-block-paragraph">このを<code class="dir_name">en</code>を<code class="dir_name">lang</code>直下で複製し、そのディレクトリ名を<code class="dir_name">ja</code>とします。</p>


<div class="wp-block-image is-style-shadow">
<figure class="aligncenter size-full"><img decoding="async" width="180" height="133" src="https://kekenta-it-blog.com/wp-content/uploads/2024/09/image.png" alt="enディレクトリ複製後のlangディレクトリ" class="wp-image-11692"/><figcaption class="wp-element-caption">enディレクトリ複製後のlangディレクトリ</figcaption></figure>
</div>


<p class="is-style-icon_good wp-block-paragraph">この<code class="dir_name">ja</code>内の<code class="file_name">validation.php</code>を編集することで、エラーメッセージを日本語対応させることが可能です。</p>



<p class="is-style-big_icon_caution wp-block-paragraph">なお前提として、プロジェクトディレクトリ直下の<code class="file_name">.env</code>ファイル内で<strong><code>APP_LOCALE=ja</code></strong>となっている必要があります。<br><br>※初期値は「en」になっており、この状態だと<code class="dir_name">lang/en</code>ディレクトリが参照されてしまいます。</p>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading">STEP２　エラーメッセージのカスタマイズ</h3>



<p class="wp-block-paragraph">エラーメッセージをカスタマイズするときは、<code class="dir_name">ja</code>内の<code class="file_name">validation.php</code>を編集するとお伝えしました。</p>



<p class="wp-block-paragraph">例えば、<code>required</code>ルールによるエラーメッセージを編集するときは以下のようにします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="validation.php" data-lang="PHP"><code>// 変更前
&#39;required&#39; =&gt; &#39;The :attribute field is required.&#39;,

// 変更後
&#39;required&#39; =&gt; &#39;:attribute は必須です。&#39;,</code></pre></div>



<p class="is-style-big_icon_check wp-block-paragraph"><code>:attribute</code>の部分には、<strong>エラーが発生した項目名</strong>が自動設定されます。</p>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading">STEP３　項目名のカスタマイズ</h3>



<p class="wp-block-paragraph">エラーメッセージ上の項目名は、<strong>デフォルトだとデータベースで使用しているカラム名</strong>になります。</p>



<p class="wp-block-paragraph">しかし、それでは「titleは必須です」のようなメッセージとなり、ユーザにとって分かりづらい内容になってしまいます。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>そこで、本節では<strong>項目名のカスタマイズ方法</strong>をご紹介します！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph"><code class="file_name">validation.php</code>の下の方にある<code>attributes</code>へ、以下のように</p>



<p class="wp-block-paragraph">「<strong>キー名（DB上のカラム名） =&gt; &#8216;任意の項目名&#8217;</strong>」と記述することで項目名を簡単にカスタマイズできます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="validation.php" data-lang="PHP"><code>&#39;attributes&#39; =&gt; [
    &#39;title&#39; =&gt; &#39;タイトル&#39;,
],</code></pre></div>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<p class="wp-block-paragraph">以上のように<strong><span class="swl-marker mark_yellow">「バリデーション用ファイル」を用意することで、エラーメッセージが正常に出力される</span></strong>ようになります。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/11/kekenta-icon-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/11/kekenta-icon-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>カスタマイズも簡単にできますね！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">高度なバリデーションの実装方法</h2>



<p class="is-style-bg_stripe wp-block-paragraph">Laravelには<strong>フォームリクエスト</strong>という、<strong><span class="swl-marker mark_yellow">より複雑なバリデーションを実装できるクラス</span></strong>が用意されています。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">より複雑なバリデーションシナリオの場合は、「フォームリクエスト」を作成することをお勧めします。フォームリクエストは、独自のバリデーションおよび認可ロジックをカプセル化するカスタムリクエストクラスです。フォームリクエストクラスを作成するには、<code>make:request</code>&nbsp;Artisan CLIコマンドを使用します。</p>



<p class="wp-block-paragraph">引用元：<a href="https://readouble.com/laravel/11.x/ja/validation.html">Laravel11日本語ドキュメント</a>（<a href="https://readouble.com/laravel/11.x/ja/validation.html">https://readouble.com/laravel/11.x/ja/validation.html</a>）</p>
</blockquote>



<p class="wp-block-paragraph">基本的なバリデーション実装では、<strong>コントローラーの登録処理メソッド内にバリデーションルールを記載</strong>していました。</p>



<p class="is-style-icon_good wp-block-paragraph">フォームリクエストを利用することで、バリデーション関係の処理をコントローラーから切り離し、なおかつ<strong>複雑なバリデーションの実装が可能</strong>になります。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>以下より<strong>フォームリクエストを利用してバリデーションを実装する手順</strong>を解説します！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading">STEP１　フォームリクエストの作成</h3>



<p class="is-style-bg_stripe wp-block-paragraph">以下のコマンドを実行することで<strong>フォームリクエストファイル</strong>が作成されます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>php artisan make:request 任意のフォームリクエストファイル名</code></pre></div>



<p class="is-style-balloon_box wp-block-paragraph"><strong>実行例</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>php artisan make:request StoreTaskRequest</code></pre></div>


<div class="wp-block-image is-style-shadow">
<figure class="aligncenter size-full"><img decoding="async" width="214" height="154" src="https://kekenta-it-blog.com/wp-content/uploads/2024/09/image-1.png" alt="フォームリクエストファイル生成後のファイル構造" class="wp-image-11710"/><figcaption class="wp-element-caption">フォームリクエストファイル生成後のファイル構造</figcaption></figure>
</div>


<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading">STEP２　フォームリクエストファイルの編集</h3>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="StoreTaskRequest.php" data-lang="PHP"><code>class StoreTaskRequest extends FormRequest
{
    /*
     * リクエストの認証制御
     * ※このメソッドをカスタマイズすることでリクエストの認証範囲を変更できますが、
     * 　当記事では割愛します。
     */
    public function authorize(): bool
    {
        return true; // falseをtrueへ変更（★）
    }

    /*
     * バリデーションルール
     */
    public function rules(): array
    {
        return [
            &#39;title&#39; =&gt; &#39;required|max:50&#39;,
        ];
    }

    /*
     * バリデーションメッセージのカスタマイズ
     * （★）手動で追加
     */
    public function messages(): array
    {
        return [
            &#39;title.required&#39; =&gt; &#39;:attribute の入力は必須です。&#39;,
        ];
    }
}</code></pre></div>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<p class="wp-block-paragraph">ポイントを解説します。</p>



<dl class="swell-block-dl is-style-vtabel">
<dt class="swell-block-dl__dt">authorize()</dt>



<dd class="swell-block-dl__dd">
<p class="wp-block-paragraph"><code>authorize()</code>は<strong>リクエストの認証を制御するためのメソッド</strong>です。</p>



<p class="wp-block-paragraph">デフォルトではfalseが返るようになっていますが、このままの状態だと403エラーが発生するため、ここをtrueへ変更して<strong>すべてのリクエストが認証される</strong>ようにします。</p>



<p class="is-style-icon_pen wp-block-paragraph">この記事では省略しますが、authorize()をカスタマイズすることでより正確な認証範囲の制御が可能になります。</p>
</dd>



<dt class="swell-block-dl__dt">rules()</dt>



<dd class="swell-block-dl__dd">
<p class="wp-block-paragraph"><code>rules()</code>には<strong>バリデーションルールを記載</strong>します。</p>



<p class="is-style-icon_pen wp-block-paragraph">【日本語ドキュメント】<a href="https://readouble.com/laravel/11.x/ja/validation.html">https://readouble.com/laravel/11.x/ja/validation.html</a><br>参照項目：「使用可能なバリデーションルール」</p>
</dd>



<dt class="swell-block-dl__dt">messages()</dt>



<dd class="swell-block-dl__dd">
<p class="wp-block-paragraph"><code>messages()</code>は<strong>バリデーションエラーが発生した際のエラーメッセージをカスタマイズするためのメソッド</strong>です。</p>



<p class="wp-block-paragraph">このメソッドを利用することで、前項「<a href="#anc-err-custom">エラー内容をカスタマイズする</a>」でご紹介した<code class="file_name">validation.php</code>を使わなくても<strong><span class="swl-marker mark_yellow">エラーメッセージを個別にカスタマイズすることが可能</span></strong>です。</p>



<p class="wp-block-paragraph">フォームリクエストを作成した時点では用意されていないため、手動で追加する必要があります。</p>



<p class="is-style-icon_info wp-block-paragraph">メソッド名は「messages」とする必要がある点にご留意ください。</p>
</dd>
</dl>



<p class="has-text-align-center wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ0OCA1MTIiPjxwYXRoIGQ9Ik0yMDEuNCAzNzQuNmMxMi41IDEyLjUgMzIuOCAxMi41IDQ1LjMgMGwxNjAtMTYwYzEyLjUtMTIuNSAxMi41LTMyLjggMC00NS4zcy0zMi44LTEyLjUtNDUuMyAwTDIyNCAzMDYuNyA4Ni42IDE2OS40Yy0xMi41LTEyLjUtMzIuOC0xMi41LTQ1LjMgMHMtMTIuNSAzMi44IDAgNDUuM2wxNjAgMTYweiI+PC9wYXRoPjwvc3ZnPg==)" data-icon="FasAngleDown" data-id="1" aria-hidden="true" class="swl-inline-icon"> </span></p>



<h3 class="wp-block-heading">STEP３　コントローラーの編集</h3>



<p class="is-style-bg_stripe wp-block-paragraph">フォームリクエストファイルでバリデーションを実装したため、コントローラーにはバリデーション関係の処理を書く必要が無くなります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-php" data-file="TaskController.php" data-lang="PHP"><code>/*
 * タスク登録処理
 */
// public function store(Request $request, Task $task)　　　　 // 変更前
public function store(StoreTaskRequest $request, Task $task)  // 変更後
{
    // バリデーションルール（★削除）
    // $validated = $request-&gt;validate([
    //     &#39;title&#39; =&gt; &#39;required|max:50&#39;,
    // ]);

    $task-&gt;title = $request-&gt;title;
    $task-&gt;save();

    return redirect()-&gt;route(&#39;tasks.index&#39;);
}</code></pre></div>



<p class="is-style-icon_info wp-block-paragraph">ひとつ注意点として、メソッドの引数にあるRequest型を、<strong><span class="swl-marker mark_yellow">紐づけたいフォームリクエストの型に書き換える必要</span></strong>があります。</p>



<p class="wp-block-paragraph">今回の例ではStoreTaskRequest型に書き換えています。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>このように、フォームリクエストを使用すればコントローラーからバリデーション処理を切り離すことができ、かつより細かな制御をすることができるようになります。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4374558503914683"
     crossorigin="anonymous"></script>
<!-- ディスプレイ【横長】 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-4374558503914683"
     data-ad-slot="9744298852"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">まとめ</h2>



<p class="wp-block-paragraph">以上が、<strong><span class="swl-marker mark_yellow">Laravelバｰジョン11でバリデーションを実装する方法</span></strong>でした。</p>



<p class="wp-block-paragraph">11以前のバージョンと書き方が同じ箇所もあるかと思いますが、大きな違いは、<strong>デフォルトでバリデーションメッセージ用のファイル（<code class="dir_name">lang</code>）がインストールされていない</strong>ことです。</p>



<p class="wp-block-paragraph">Laravelはドキュメントを日本語訳して下さっている方々がいるため、何か困ったことがあればそちらを参照すると大体の問題は解決できるかと思います。</p>



<p class="is-style-icon_pen wp-block-paragraph">【日本語ドキュメント】<a href="https://readouble.com/laravel/11.x/ja/">https://readouble.com/laravel/11.x/ja/</a></p>



<p class="wp-block-paragraph">しかし、その方のプログラミング歴によっては、それでもドキュメントを読み解くのは大変なことも多々あるかと思います。（ドキュメントの言い回しはなかなか慣れません……）</p>



<p class="wp-block-paragraph">今回はそうした方々の一助となればという思いもあり、簡単ではありますが、バリデーションに関する記事を書かせていただきました。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" data-src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="lazyload c-balloon__iconImg" width="80px" height="80px"><noscript><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2023/07/キリッ-150x150.jpg" alt="" class="c-balloon__iconImg" width="80px" height="80px"></noscript><span class="c-balloon__iconName">ケケンタ</span></div><div class="c-balloon__body -speaking -border-on"><div class="c-balloon__text">
<p>この記事が少しでもお役に立ったなら何よりです！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p class="wp-block-paragraph">それでは、最後までご覧いただきありがとうございました！</p>


<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2024/10/eye-catch__laravel-ver11-seeder-factory__11960-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/laravel-ver11-seeder-factory/">【Laravel11】シーダとファクトリでテストデータを一括作成する方法</a>
						<span class="p-blogCard__excerpt">Webアプリ開発をするときは、実際の画面表示やデータ処理の動きなどを確認するためにテストデータを作成する必要があります。 テストデータは手作業で入力していっても&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="swell-block-postLink">			<div class="p-blogCard -internal" data-type="type2" data-onclick="clickLink">
				<div class="p-blogCard__inner">
					<span class="p-blogCard__caption">あわせて読みたい</span>
					<div class="p-blogCard__thumb c-postThumb"><figure class="c-postThumb__figure"><img decoding="async" src="https://kekenta-it-blog.com/wp-content/uploads/2024/10/eye-catch__laravel-ver11-gate-policy__11851-300x169.jpg" alt="" class="c-postThumb__img u-obf-cover" width="320" height="180"></figure></div>					<div class="p-blogCard__body">
						<a class="p-blogCard__title" href="https://kekenta-it-blog.com/laravel-ver11-gate-policy/">【Laravel11】Gate（ゲート）とPolicy（ポリシー）で「認可」機能を実装する</a>
						<span class="p-blogCard__excerpt">Webアプリでは、特定の機能を実行する権限があるかどうかをチェックするために「認可」という仕組みを利用します。 PHPのフレームワークであるLaravelには、この「認可&#8230;</span>					</div>
				</div>
			</div>
		</div>

<div class="p-blogParts post_content" data-partsID="12516">
<p class="is-style-balloon_box wp-block-paragraph"><span style="--the-icon-svg: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgdmlld0JveD0iMCAwIDQ4IDQ4Ij48cGF0aCBkPSJNMzIgNDYuNUgxNmMtMS4xIDAtMi0uOS0yLTJzLjktMiAyLTJoMTZjMS4xIDAgMiAuOSAyIDJzLS45IDItMiAyek00MS43IDE1LjlDNDEuMyAxMyA0MCAxMC4zIDM4LjIgOCAzNC41IDMuMiAyOSAuOCAyMy4xIDEgMTQgMS40IDYuNSA4LjkgNiAxOGMtLjMgNiAyLjQgMTEuNyA3LjIgMTUuNC41LjQuOC45LjggMS41djEuNmMwIDIuMiAxLjggNCA0IDRoMTJjMi4yIDAgNC0xLjggNC00VjM1YzAtLjYuMy0xLjIuOS0xLjcgNS4zLTQgOC0xMC42IDYuOC0xNy40em0tNy4xIDEuN2gtLjNjLS43IDAtMS4zLS41LTEuNS0xLjItLjctMy4yLTMuMi01LjctNi40LTYuMy0uOC0uMS0xLjQtLjktMS4yLTEuN3MuOS0xLjQgMS43LTEuMmM0LjQuOCA4IDQuMiA4LjkgOC42LjEuOC0uNCAxLjYtMS4yIDEuOHoiPjwvcGF0aD48L3N2Zz4=)" data-icon="LsLightbulb" data-id="0" aria-hidden="true" class="swl-inline-icon"> </span><strong>Laravelのおすすめ記事</strong></p>


<div class="p-postListWrap"><ul class="p-postList -type-simple"><li class="p-postList__item">
	<a href="https://kekenta-it-blog.com/laravel-change-dbtable-col-name/" class="p-postList__link">
		<div class="p-postList__body">
			<div class="p-postList__meta">
				<div class="p-postList__times c-postTimes u-thin">
	<time class="c-postTimes__posted icon-posted" datetime="2024-12-11" aria-label="公開日">2024-12-11</time></div>
			</div>
			<h2 class="p-postList__title">【Laravel】カラム名を変更する方法【マイグレーション】</h2>		</div>
	</a>
</li>
<li class="p-postList__item">
	<a href="https://kekenta-it-blog.com/laravel11-change-dbtable-col-type/" class="p-postList__link">
		<div class="p-postList__body">
			<div class="p-postList__meta">
				<div class="p-postList__times c-postTimes u-thin">
	<time class="c-postTimes__posted icon-posted" datetime="2024-12-04" aria-label="公開日">2024-12-04</time></div>
			</div>
			<h2 class="p-postList__title">【Laravel】データベーステーブルのカラムタイプを変更する方法【マイグレーション】</h2>		</div>
	</a>
</li>
<li class="p-postList__item">
	<a href="https://kekenta-it-blog.com/laravel-introduction/" class="p-postList__link">
		<div class="p-postList__body">
			<div class="p-postList__meta">
				<div class="p-postList__times c-postTimes u-thin">
	<time class="c-postTimes__posted icon-posted" datetime="2024-11-17" aria-label="公開日">2024-11-17</time></div>
			</div>
			<h2 class="p-postList__title">【Laravel】インストール方法～初めてのデータ出力の流れを丁寧に解説！</h2>		</div>
	</a>
</li>
<li class="p-postList__item">
	<a href="https://kekenta-it-blog.com/laravel-ver11-seeder-factory/" class="p-postList__link">
		<div class="p-postList__body">
			<div class="p-postList__meta">
				<div class="p-postList__times c-postTimes u-thin">
	<time class="c-postTimes__posted icon-posted" datetime="2024-10-18" aria-label="公開日">2024-10-18</time></div>
			</div>
			<h2 class="p-postList__title">【Laravel11】シーダとファクトリでテストデータを一括作成する方法</h2>		</div>
	</a>
</li>
<li class="p-postList__item">
	<a href="https://kekenta-it-blog.com/laravel-ver11-gate-policy/" class="p-postList__link">
		<div class="p-postList__body">
			<div class="p-postList__meta">
				<div class="p-postList__times c-postTimes u-thin">
	<time class="c-postTimes__posted icon-posted" datetime="2024-10-11" aria-label="公開日">2024-10-11</time></div>
			</div>
			<h2 class="p-postList__title">【Laravel11】Gate（ゲート）とPolicy（ポリシー）で「認可」機能を実装する</h2>		</div>
	</a>
</li>
<li class="p-postList__item">
	<a href="https://kekenta-it-blog.com/laravel-ver11-validation/" class="p-postList__link">
		<div class="p-postList__body">
			<div class="p-postList__meta">
				<div class="p-postList__times c-postTimes u-thin">
	<time class="c-postTimes__posted icon-posted" datetime="2024-09-29" aria-label="公開日">2024-09-29</time></div>
			</div>
			<h2 class="p-postList__title">【Laravel11】バリデーションの実装方法やエラーメッセージのカスタマイズ</h2>		</div>
	</a>
</li>
</ul></div></div>]]></content:encoded>
					
					<wfw:commentRss>https://kekenta-it-blog.com/laravel-ver11-validation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
