Laravelでalpha,alpha_num,alpha_dashのバリデーションを使っても日本語入力ができてしまうので、カスタムバリデーションを作成して対応してみます。
サンプルコード
カスタムバリデーションについては以前に記事を投稿していますので、そちらをご確認ください。
Laravelでカスタムバリデーションを作成する | cly7796.net
今回は上記で行った設定に、alpha,alpha_num,alpha_dashの代わりになるバリデーションを追加してみます。
app\Validator\CustomValidator.php
<?php
namespace App\Validator;
class CustomValidator extends \Illuminate\Validation\Validator
{
public function validateAlphaCheck($attribute, $value, $parameters)
{
return preg_match('/^[A-Za-z]+$/', $value);
}
public function validateAlphaNumCheck($attribute, $value, $parameters)
{
return preg_match('/^[A-Za-z\d]+$/', $value);
}
public function validateAlphaDashCheck($attribute, $value, $parameters)
{
return preg_match('/^[A-Za-z\d_-]+$/', $value);
}
}
PostController.php
<?php
namespace App\Http\Controllers;
use Request;
use Redirect;
use Validator;
class PostController extends Controller
{
public function getIndex()
{
return view('post.index');
}
// バリデーションのルール
public $validateRules = [
'alpha'=>'alpha_check',
'alpha_num'=>'alpha_num_check',
'alpha_dash'=>'alpha_dash_check'
];
public $validateMessages = [
'alpha_check'=>'半角英字で入力してください。',
'alpha_num_check'=>'半角英数字で入力してください。',
'alpha_dash_check'=>'半角英数字と-_で入力してください。'
];
public function postIndex()
{
// postしたデータをすべて取得
$data = Request::all();
//バリデーションをインスタンス化
$val = Validator::make(
$data,
$this->validateRules,
$this->validateMessages
);
//バリデーションNGの場合
if($val->fails()){
return redirect('/post/')->withErrors($val)->withInput();
}
return 'OK!';
}
}
resources\views\post\index.blade.php
{!! Form::open() !!}
<dl>
<dt>{!! Form::label('alpha', '英字:') !!}</dt>
<dd>
{!! Form::text('alpha', null) !!}
@if($errors->has('alpha'))<p class="error">{{ $errors->first('alpha') }}</p> @endif
</dd>
</dl>
<dl>
<dt>{!! Form::label('alpha_num', '英数字:') !!}</dt>
<dd>
{!! Form::text('alpha_num', null) !!}
@if($errors->has('alpha_num'))<p class="error">{{ $errors->first('alpha_num') }}</p> @endif
</dd>
</dl>
<dl>
<dt>{!! Form::label('alpha_dash', '英数字とハイフン・アンダーバー:') !!}</dt>
<dd>
{!! Form::text('alpha_dash', null) !!}
@if($errors->has('alpha_dash'))<p class="error">{{ $errors->first('alpha_dash') }}</p> @endif
</dd>
</dl>
<div>
{!! Form::submit('送信') !!}
</div>
{!! Form::close() !!}
日本語入力でエラーが出ることが確認できました。

【参考サイト】
コメントが承認されるまで時間がかかります。