00:00
接下来利用所学的模型的注入完成我们的编辑的功能。首先。把这个测试的删掉,找到。博客的这个控制器啊。看一下。我们的编辑是。哪里显示这个页面是这里是吧,编辑页面。这里我们之前是注入了这个ID。看一下。对吧。好。因为这个博客啊,是使用了这个资源路由。使用资源路由,如果不清楚这个编辑的这个路由的这个地址,还有它实际上。访问的这个方法的话,还是一样可以使用。PP root list使用管道服务去筛选啊,Blog相关的。
01:07
找到他的编辑。这里看。请求的方式啊,这是编辑的页面,请求的方式是get啊,请求的地址是这个啊,中间我们要传一个啊参数路由参数啊。名字是。Edit。请求的方法是。Blog控制器里面的这个方法对吧。啊,接着看一看。执行编辑的啊,执行编辑的是哪个。是block.update这是路由的名称对吧?那我们请求的地址是什么呢?是blog,然后加上路由参数,是不是请求的方式?什么是put?这三方啊下面。我们就用学到的这个路由啊,注入模型注入来。完成这个编辑啊,这时候我们之前是获取了这个ID,对不对。
02:00
你如果使用ID的话,你还要通过ID去查询这个,呃,博客的一个详情,然后给它显示到这个里面对吧,那我们既然学了。啊,路由的这个模型的一个猪肉。这里我们要一个什么呢?依赖一个。啊,博客的一个模型。然后给上那个变量,这样的话,当我们传入的这个参数。他就会去。博客的这个模型里面啊,去用ID去查对应的数据,如果能查着,就会把这个查着的这个模型对象给到这个变量,如果查不着就返回404。我来看一下有没有看到。啊,直接请求。第一条啊,是不是有这个博客,看它的ID是不是一对不对,如果我们查一个不存在的。是不是没有四乘四啊,我们查第三条。是不是查到了第三条?然后这是这个它的一个内容对吧。
03:01
ID。13。还有用户。啊,这个就是。模型的一个注入就是在我们需要的这些路由参数的时候,如果我们在控制器或者一些路由里面的背包里面去接收这个参数的时候,可以让它依赖于一个模型的一个类,这样的话他会去这个模型里面去查找。对应的数据查找的话,就会给这个变量。这个时候。啊,因为是编辑页面,编辑页面的话,我们查找数据之后,哎,得到这个数据之后呢,只需要把它给返回到这个。页面里面,然后页面里面能用到这个数据,就可以加入参数,是不是可以传一数组。Blog。像到blog啊,这时候页面就可以使用这个变量了。清楚吗?再找到我们的编辑页面。把这个线关掉。Resource will。
04:00
Blog找到编辑页面。嗯,那这里的这个数据,我们之前因为是写页面,我写的是死数据是吧,这里就可以去把这个数据给换一换了,比如说我们的标题。就可以使用。Blog里面的。Title对不对,这个类型也换掉X。然后内容啊,就不写这个测试博客了,写我们实际的blog里面的。抗塔。看一下我们的页面显示。是不是标题有了,内容也有了,但是分类没有啊?对吧,分类的话,因为我们数据库里存的是一个分类的ID啊,这里是显示出来了所有的一个分类,所以我们只要拿数据库存的ID和这里的这个ID做一个对比,如果是一致的话,让他select就可以了,这里我们写一个。三元运算符进行一下判断啊,也就是啊blog里面的。
05:02
它的这个分类ID如果等等于我们当前循环的所有分类的这个ID。那么我就让你。Select选中。否则的话。啊,就不做任何输出。这时候我看一下分类是不是也有了。这时候页面的数据啊,已经。填充完成了。还需要改一下这个表单的数据,首先是我们表单提交的一个地址。看一下更新,更新是使用的这个。啊,Update是不是提交的地址是这个。对吧,提交的方式是put。提交的地址好写,我们只需要啊写他的这个action,然后用路由这个辅助函数。然后用他的这个路由名字去生成这个链接就可以了,对吧。啊,但是呢,他还用一个要一个这个blog参数,对吧,我们是不是可以在这里面啊,再传入这个blog,传上这个blog的这个ID。
06:08
对不对,Blog里面的这个ID,这个链接就就可以了,对吧,我们可以检查一下链接对不对。来去刷新一下。检查。你看一下这个表单的这个链接对不对,链接是没问题的是吧。那我们现在应该处理什么问题?处理这个请求方式的一个问题。这里。提交更新的话,它需要是put方式,但是我们表达只有get和post。对不对,就有这个。我们是不是可以使用这个按method去模拟这个put的一个提交的一个行为,对吧?啊,既然是。啊,一个表单我们是铺的方式提交,它是不是还会进行csf的一个认证,要不然你419你你也是一样提交不过去啊,所以还要加一个csf。
07:00
啊,这样我们就可以提交过去了。来看一看。刷新一下页面啊,提交是不是直线更新变会我们的ID也过来了,对不对,好。这个时候啊。呃,还是我们的编辑页面。这个时候我再说一下什么呢。说一下关于啊,我们这个链接的一个问题。啊,这个链接的问题。嗯,因为我们的这个路由需要一个啊blog这样一个路由参数,所以我们传了一个blog的路由参数啊,并且把ID给他。还可以怎么写呢?之前我是不是说过,呃,如果只有一个参数的话,是不是可以不要这个数组,直接把参数写进去?好,把这个注释角来看一看。复制一个下来。把这个打开。之前说过只有一个参数的话,是不是可以,哎,直接省略速度,直接这么去写,把ID传过去对吧。嗯,刷新一下。
08:02
呃,查看网页源代码,这个时候我们就直接在这查看吧,方便我们刷新,你看这里啊。是不是链接是对的,哪怕你再刷新一下链接是不是也是对的。是不是好,还可以怎么做呢?把这个注释掉。啊,再复制一份。还可以啊,直接传一个模型过去。来看看行不行,刷新一下。是不一样的。是吧,也是这个三对不对,所以你直接传这个啊模型也是可以的,它会自动帮你取这个模型里面的这个啊主件。啊,就是我们设置的这个路由的一个键。看到没有?嗯,也就是之前。我们讲。啊,这个可以重写那个路由的一个键吗。就是那个键默认的话,它还是会使用那个ID。啊,我给你找找那个方法啊。
09:00
就这个方法啊,自定义的这个键名默认的话,它就是使用我们的ID吗?如果我们自定位键名,不仅我们在呃使用这个。呃,模路由进行模型猪的时候,他会去用这个键面,在我们去使用这个路由去生成这个链接的时候,它也是一样的,都是使用的是这个参数啊,但是我们不用管它,我们一般都默认默认用这个ID可以。所以说我们这里啊,直接给这个模型也是可以的,就是用路由啊去生成这个链接的时候。可以吧?注释一下。还可以怎么做呢,复查这个。还可以用数组啊,直接把一个模型给到他也可以啊,如果是多个的话,你后面数组接着去写其他参数就行。啊,一般单个的话,我们直接写就可以了,看一下一样不一样。刷新一下。是不是一样的。啊。这里就注点啊,这里我们就使用这种吧。
10:01
直接穿模型过去。嗯,这里其实主要的作用就是生成一个链接嘛,最终帮我们去生成这么一个链接,方便我们就让我们好去提交到这个地址。这相关的。接下来。呃,看一下啊。提交。啊,能提交过去啊。我们接收这个数据的是哪个方法呢?是我们的update。啊,但是他这里。是接收到这一个是一个ID,对吧,我们如果使用ID去进行更新的话,还要去写这个VR条件V绕ID等于传入的这个ID对不对。啊,是不是要麻烦,是不是可以直接写,把它写成,哎,让这个路由帮我们注入这个博客的这个实例啊,我们依赖一个block模型,然后do block。来打印一下看看。看看可不可以用下面这个就先不用管它了。
11:04
继续提交,是不是帮我们注入了IDV3的这个博客的这个模型。对吧,如果我们改成。一。啊121,是啊,这个打错了,应该是一斜杠给他。然后我们再次提交。是不是就帮我们注入了一这个模型?因为我们DD方法是在这个update里面是提交的这个里面去滴的,所以我们要先进到编辑页面再提交过来嘛。这个时候我们如果得到了一个这个模型实例,对它更新就非常简单了。啊,想想之前我们学模型的时候进行一些更新操作。是不是只需要对这个模型啊,对这条。数据模型进行它的属性的一个更新就可以了,对吧,Title等于request。Input title。
12:05
内容。等于我们提交的内容分类ID。等于提交的分类的ID,最后不要忘了save啊,只有save的时候它才会进行了一个更新的操作。啊。这时候我们去打印一下这个blog。先回编辑页面啊E。然后把这个改成CCCCCC啊。分类也给他改了。分类ID。是空。先打印一下我们提交这个参数啊,看看有没有问题。
13:01
刷新一下。嗯。没有提交过来啊,也就是我们的这个编辑的表单没有给name。抬,把内幕给上。分类的这个下拉框的内幕也给上。你input如果不给内的话,是提交不到后台的。包括他的之前我们对添加页面添加了,然后编辑页面还没有添加。好。啊,这时候要回去去重新刷新一下页面才行听。来再修改一下。分类也改了。啊,提交的数据是都提交过来了,包括分类的ID这些都变了啊。接下来呢?就把这个注释。删掉。是不是更新成功了,你看这个数据是我们更新后的一个数据CC是吧。
14:02
啊,包括我们去这个编辑页面去验证一下。看是不是都更新后了。好,这时候如果是更新完成的话,可以再来进行一个判断啊。如果更新成功的话。怎么办?要返回一个成功的消息,是不是比他打卡?位置返回成功的一个消息。诶,就是告诉他更新成功。否则的话啊,如果更新失败的话。就爱卡。啊,位置艾瑞更新失败。同时with input啊,把之前他的叔叔给带过去。
15:06
啊。接下来看一看。现在。我来刷新页面。啊,执行更新。发现没有任何提示是不是?因为我们没有引入这个消息提示的一个。啊,指示图include common里面。然后把成功的也给引进来。再刷新啊提交。是不是更新成功。啊,但是现在我们发现一个情况啊,比如把标题改成空,把它改成空。然后这个分类我不填。是不是会发现报错,这样很明显是啊,不符合规矩的也是,我们还是要需要对它输入的内容进行做一个检测啊,不能为空。对吧,那我们怎么办呢?是不是我们之前在写添加的时候已经写好了一个啊,博客的一个。
16:04
单验证对吧,这里直接使用就可以了,把这个request换成博客的这个表单验证就可以了,这时候他就会对我们的字段做一个验证码,你现在再来刷新。啊,是不是就给我们返回了内容都是必填对不对,这次我们再来删掉。是不是那种必填?对不对。啊,这个input其实不用写的啊,用用不着,因为我们这是个呃,编辑页面,编辑页面的话,我们拿到这个数据是拿啊这个这条博客的这个数据这么返回就可以了。这样的话,我们啊,这个博客的修改也就写完了,当然这是方式一啊。21啊。是不是还有放十放12。这个还是代码比较多的那方式二啊,因为我们的字段只有三个,你写起来还行,如果我们字段比较多呢,是不是可以使用,使用我们的费用费有是不是要用一个已有的啊,一个已存在的一个模型实例才可以,对吧。
17:09
我们使用它的这个feel feel呢,可以把request。啊,它里面是可以给一个这个速度,但是我们可以把request所有的这个数据都给他。对不对,但是要排除掉谁排除掉。不需要吧?还有这个method的不需要吧,我们先打印一下,我就开,你看是不是多了这两个字段。那警体掉是不是多了这个method和这个to影,这样不需要是吧,是用那个排除掉,剩下的是我们需要的。对不对。好,所以这里把这两个给排除掉。之后要记得C5才可以啊啊,这个方式是代码比较少的,要更新。
18:03
测试一下,先去编辑页面。然后把它改成ddd。分类也换一个,换成GS。是不是更新成功了。啊,这样我们的更新。就完成了。通过这个更新的例子啊。就是让大家明白这个路由去啊,注入这个路由参数的时候,我们可以啊,在这个参数里面写上类型的一个限定,比如说依赖于。这个某一个数据的一个模型,这样的话,这个路由参数它就会帮我们去查对应的一个啊表,去得到我们需要的一个模型,帮我们注册进来,注册进来之后给到这个变量,这个时候是非常用的,尤其是在啊展示一个。啊,内容的一个详情啊,或者是编辑一个内容的啊,一个编辑页面。这种时候就是特别好用。一定要熟练的去使用这个路由的一个模型的一个注入。
我来说两句