一、注册路由
Route::get('/articles/create', 'ArticlesController@create');
Route::post('/articles', 'ArticlesController@store');
注意:这两个路由必须在
Route::get('/articles/{id}', 'ArticlesController@show');
这个路由的前面,否则会报错
二、修改方法
修改 ArticlesController.php 中的 create 方法
public function create()
{
return view('articles.create');
}
三、安装 illuminate/html
composer require illuminate/html
配置,在 app/config.php 的 providers 中新增配置
Illuminate\Html\HtmlServiceProvider::class,
配置,在 app/config.php 的 aliases 中新增配置
'Form' => Illuminate\Html\FormFacade::class,
四、新建视图
在 resources/view/app.blade.php 引入 bootstrap
https://cdn.bootcdn.net/ajax/libs/bootstrap/5.2.3/css/bootstrap.min.css
bootstrap 其他版本 https://www.bootcss.com/view.php?name=bootstrap
新建文件:resources/view/articles/create.blade.php
五、修改控制器方法
public function store(Request $request)
{
$input = $request->all();
$input['published_at'] = Carbon::now();
Article::create($input);
return redirect('/articles');
}
访问 http://localhost:8000/articles/create 进行测试
可以使用以下方法获取某个值,比如
$title = $request->get('title');
六、setPublishedAtAttribute
修改 store 方法
public function store(Request $request)
{
$input = $request->all();
Article::create($input);
return redirect('/articles');
}
修改 create.blade.php,新增红色框中的代码
Article 新增方法
public function setPublishedAtAttribute($date)
{
$this->attributes['published_at'] = Carbon::createFromFormat('Y-m-d', $date);
}
访问 http://localhost:8000/articles/create 进行测试
七、表单验证
创建控制器
php artisan make:request CreateArticleRequest
上述命令创建了 app/Http/Requests/CreateArticleRequest.php 文件
修改 CreateArticleRequest.php
public function authorize()
{
return true;
}
表示任何人都可以修改
public function rules()
{
return [
'title' => 'required|min:3',
'content' => 'required',
'published_at' => 'required',
];
}
表示 title、content、published_ed 必须传入,title 最少 3 个字符
修改 app/Http/Controllers/ArticlesController.php 的 store 方法
public function store(Requests\CreateArticleRequest $request)
{
Article::create($request->all());
return redirect('/articles');
}
修改 resources/views/articles/create.blade.php
新增红色框代码
访问 http://localhost:8000/articles/create 进行测试
也可以用将验证的规则写在控制器当中,不过不推荐
public function store(Request $request)
{
$rule = [
'title' => 'required|min:3',
'content' => 'required',
'published_at' => 'required',
];
$this->validate($request, $rule);
Article::create($request->all());
return redirect('/articles');
}
八、include
将错误代码放在一个文件中,新建 resources/views/errors/list.blade.php
修改 resources/views/articles/create.blade.php,将错误代码替换成
@include('errors/list')
将表单放在一个文件中,新建 resources/views/articles/form.blade.php
修改 resources/views/articles/create.blade.php,将表单代码替换成
@include('articles/form')
修改后的 resources/views/articles/create.blade.php