laravel5.1-第7.3章-简单blog-创建文章 laravel5.1-第7.3章-简单blog-创建文章

2023-06-28

一、注册路由

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

https://file.lulublog.cn/images/3/2023/06/GB6fZEeEbB1Cc1cfrCFd77c88eGeEg.jpg

五、修改控制器方法

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,新增红色框中的代码

https://file.lulublog.cn/images/3/2023/06/oXPQ5QPKotQ55k6g1oS52s580jStG2.jpg

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

https://file.lulublog.cn/images/3/2023/06/ncy1KtGYjjTj1PnCKE2ECtJtY18p22.jpg

新增红色框代码

访问 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

https://file.lulublog.cn/images/3/2023/06/Tuu6x5Gzuf5XyFs5P2LU5xPXZcPpZu.jpg

修改 resources/views/articles/create.blade.php,将错误代码替换成

@include('errors/list')

将表单放在一个文件中,新建 resources/views/articles/form.blade.php

https://file.lulublog.cn/images/3/2023/06/gR3nmPNSyPb6mp23GYnlSynNI2NBLZ.jpg

修改 resources/views/articles/create.blade.php,将表单代码替换成

@include('articles/form')

修改后的 resources/views/articles/create.blade.php

https://file.lulublog.cn/images/3/2023/06/MCXzuc25XoX2oCxQVZVo6xkH52ODCc.jpg

访问 http://localhost:8000/articles/create 进行测试

阅读 414