私はLaravelで最初のフォームを作成しており、フォームの生成はすべて動作しています。ストア機能が、フォーム検証の結果とは無関係に、私の連絡先ページに盲目的にユーザーを返すように見えるだけです。Laravelフォームの検証が機能していないようです。
投稿された電子メールアドレスが電子メールではなくランダムな文字列である場合、私は/ contactページに戻ってきて、感謝メッセージがビューに送信されます。
私のコントローラは、次のようになります。
namespace App\Http\Controllers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\View;
use Illuminate\Support\Facades\DB;
use App\Http\Requests\ContactFormRequest;
class ContactController extends Controller {
public function create(){
return view('contact');
}
public function store(ContactFormRequest $request) {
return \Redirect::route('contact')
->with('message', 'Thanks for contacting us!');
}
}
そして、このようなフォームハンドラ:
namespace App\Http\Requests;
use Illuminate\Http\Request;
class ContactFormRequest extends Request {
public function authorize() {
return true; // don't need to be registered to run form so true
}
public function rules() {
return [
'email' => 'required|email',
];
}
}
これは、次のルート
if (config('app.tan_site_page_contact')===true){
Route::get('/contact', ['as' => 'contact', 'uses' => '[email protected]']);
Route::post('/contact', ['as' => 'contact_store', 'uses' => '[email protected]']);
});
そして、このような形で制御されます:
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@if(Session::has('message'))
<div class="alert alert-info">
{{Session::get('message')}}
</div>
@endif
{!! Form::open(array('route' => 'contact_store', 'id' => 'contactCallMeForm')) !!}
{!! Form::label('Your E-mail Address') !!}
{!! Form::text('email', null, array('required', 'class'=>'form-control', 'placeholder'=>'Your e-mail address')) !!}
{!! Form::submit('Contact Us!', array('class'=>'btn btn-primary')) !!}
{!! Form::close() !!}
フォームのHTMLは、ここでの問題は、あなたのContactFormRequest
クラスです
<form method="POST" action="http://localhost/contact" accept-charset="UTF-8" id="contactCallMeForm" novalidate="">
<input name="_token" type="hidden" value="VNHchLZhfsXadVZXCZWHGdAuJ4zgmO6cDJIGhR59">
<label for="Your E-mail Address">Your E-mail Address</label>
<input required="required" class="form-control" placeholder="Your e-mail address" name="email" type="text">
<input class="btn btn-primary" type="submit" value="Contact Us!">
</form>
生成されたフォームのHTMLを表示し、ルートも追加します。 – Kyslik
'contact'と' contact_store'ルートの宣言を追加してください。 – salamza
更新@Kyslik – AdamJones