超简单的Laravel新手入门教程

更新一个资源

此课程是收费课程,请先购买或加入会员后再访问。

现在活动的读取删除添加都已经完成了。
这一集我们来实现CURD里面,最后的update

修改链接

来添加一个 edit 的链接,到 views/issues/show.blade.php

<a href="{{route('issues.edit', $issue->id)}}"...>Edit</a>

route

Route::get('issues/{issue}/edit', 'IssuesController@edit')->name('issues.edit');

注意:这一行路由要写在 get 'issues/{issue}' 的上面。

controller

IssuesController.php中添加

public function edit($id)
{
    $issue = Issue::find($id);
    return view('issues.edit')->with('issue', $issue);
}

edit页面

最重要的是要有 views/issues/edit.blade.php

  1. create.blade.php中的内容原封不动搬过来,命名为edit.blade.php
  2. 标题改为<h1>修改活动</h1>
  3. formaction改为{{route('issues.update', $issue->id)}}
  4. 填写标题的input标签中加上 value="{{$issue->title}}"
  5. textarea的开始与结束标签中间,加上{{$issue->content}}

Tips: input标签有value属性,而textarea标签直接写在两个textarea的中间就好。

浏览报错,相信你已经非常清楚的知道,我们又要去web.php中添加对应的route

Route::put('issues/{issue}', 'IssuesController@update')->name('issues.update');

因为这里使用了put动词,而form表单并不能发起putpatchdelete请求。
laravel的解决方式是,添加 {{ method_field('PUT') }},来伪造一个put请求。

最终得到的页面

@extends('layouts.app')

@section('content')
    <div class="am-container">
        <div class="header">
            <div class="am-g">
                <h1>修改活动</h1>
            </div>
            <hr>
        </div>

        <form class="am-form" action="{{route('issues.update', $issue->id)}}" method="post">
            {{ csrf_field() }}
            {{ method_field('PUT') }}

            <fieldset>
                <div class="am-form-group">
                    <label>标题</label>
                    <input type="text" placeholder="输入活动标题" name="title" value="{{$issue->title}}">
                </div>

                <div class="am-form-group">
                    <label>内容</label>
                    <textarea rows="5" name="content">{{$issue->content}}</textarea>
                </div>

                <button type="submit" class="am-btn am-btn-default">提交</button>
            </fieldset>
        </form>
    </div>
@endsection

更新数据库

controller中,添加update方法

public function update(Request $request, $id)
{
    $issue = Issue::find($id);
    $issue->update($request->all());
    return redirect(route('issues.show', $id));
}

提交一下试试,活动已经可以修改了。不错不错,CURD的所有功能都已经完美实现。