laravel5.2フレームワークではデフォルトでフォームモジュールが提供されていないため、モジュールのインストールから
ルート app/Http/routes.php に新しいルートを追加します
Route::get('/articles','ArticlesController@index');Route::get('/articles/create','ArticlesController@create');//因为下面的{id}能够传入所有作为id的参数到show方法,所以需要先将create路由放在他的上面,这样在访问的时候,会优先匹配create路由,然后再到下面的Route::get('/articles/{id}','ArticlesController@show');Route::post('/articles/store','ArticlesController@store');//使用一个post路由,这个路由是为了处理create页面提交过来的表单的
public function create(){ // create方法,指向create.blade.php, return view('articles.create'); } public function store(Request $requests){ //store方法是接受create页面提交的数据的处理方法,这个Request $requests是注入实例,需要在页面use这个类Illuminate\Http\Request $input = $requests->all(); //获取request请求的所有数据 $input['publish_at']=Carbon::now(); Articles::create($input);//通过create方法写入数据库 return redirect('/articles'); //写入后重定向到首页 }
@extends('layout.app')@section('content') {!! Form::open(array('url' => '/articles/store')) !!} //form表单提交的地址就是我们store路由 <!--- Title Field ---> <div class="form-group"> {!! Form::label('title', 'Title:') !!} {!! Form::text('title', null, ['class' => 'form-control']) !!} {!! Form::label('content','content:') !!} {!! Form::textarea('content',null,['class'=>'form-control']) !!} {!! Form::submit('submit',['class'=>'btn btn-primary form-control']) !!} </div>//这些都是laravelcollective html 和form模块的使用方法//{!! !!}是blade引擎的写法,主要是为了防止代码直接被解析为html,详情参考https://laravel.com/docs/5.2/blade {!! Form::close() !!}@stop
< !DOCTYPE html><html><head> <title>Laravel</title> <!-- 新 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"/></head><body> <div class="container"> <form method="POST" action="http://localhost:8000/articles/store" accept-charset="UTF-8"><input name="_token" type="hidden"/> //action里面指向了我们的store路由,laravel自带了一个隐藏_token避免一些跨站提交 <!--- Title Field ---> <div class="form-group"> <label for="title">Title:</label> <input class="form-control" name="title" type="text" id="title"/> <label for="content">content:</label> <textarea class="form-control" name="content" cols="50" rows="10" id="content"></textarea> <input class="btn btn-primary form-control" type="submit" value="submit"/> </div> </form> </div> </body></html>
を使用します