Form-Model-Binding
打赏作者

sonics34

update中为什么要加入 articles=Article::findOrFail(articles = Article::findOrFail(id); 这样岂不是多了一次查询,直接接收all()更新对应的id不是更快吗

JellyBool

更新对应的id不明白。。。。 @sonics34

sonics34
where('id',$id) -> update($input)    这样
JellyBool

也可以的啊 , @sonics34

sonics34

如果用resource()注册路由,那么有办法给变量加正则限制吗

JellyBool

这个问题貌似没有仔细想过,我看看 @sonics34

box

请问一下为啥更新的文章不是在第一个啊……

JellyBool

latest()是默认以created_at排序的,如果你想更新的文章排第一,可以这样:

Article::latest('updated_at')

@box

xiao

published_at没有绑定上,怎么绑定?

xiao

@JellyBool published_at没有绑定上,怎么绑定?

JellyBool

你将published_at的表单这个date('Y-m-h')这个默认值去掉可以不?

zczhang

@JellyBool @xiao 我将表单这个date(‘Y-m-h’)这个默认值去掉试了 还是没有绑定成功
表单published_at 的值显示的是默认值(年/月/日)

ashley

Form只有text,submit等吗?怎么实现下拉框并模型绑定呢?

icediv

@zczhang @xiao 这个绑定问题貌似是date类型的input标签在chrome下表现的问题,页面在IE下打开,可以看到绑定的日期,我的是IE11,貌似IE不支持date类型的input标签所以直接把内容按text的input显示了。

chrome下debug页面可以看到值是对的

icediv

@sonics34 那条查询是为了防止该id对应的条目已经被删除了的情况

JellyBool

额,具体什么问题。。。 @beidouzhiguang

xueyunlong67

@JellyBool 请问php语言是你们大学的专业课吗??

JellyBool

没有,自学的 @xueyunlong67

xueyunlong67

妈呀,你太牛x了,我是今年刚毕业的,现从事php开发,嘿嘿,我是刚接触lv框架不久,
小伙子,你多大了,能否交流一下(技术上的交流),嘿嘿@JellyBool

JellyBool

自我介绍看这里 https://jellybool.com/post/about-jellybool @xueyunlong67

woailuosj

@JellyBool 我把验证写在了单独的Request文件中,我在里面加了两个字段唯一性判断,并在方法中使用了,然后我想让新建和更新的时候都用这个进行验证,出现的问题是在更新的时候还是会去检查存在的唯一性判断的两个字段的唯一性,我想需要去验证除了它自己之外的唯一性,该怎么实现这个更新?

woailuosj

@JellyBool 然后就是在FORM里面,radio和select如何使用?我也想让他们实现binding

JellyBool

第一:你是怎么判断新建更新这两个应用场景的? 可以看看这个https://laravist.com/discussion/151
第二:radio和select还是一样用,你可以参考这个 https://laravist.com/article/20

@woailuosj

woailuosj

@JellyBool 哦哦好的,谢谢

237552032

@JellyBool @sonics34

where('id',$id) -> update($input)

这种方法你是怎么实现的,我时这样实现的

Article::where('id','=',$id)->update($request->except('id','_method','_token','/article/'.$id));

感觉有点复杂

JellyBool

你是想实现什么呢?为什么会有这么多的except()? @237552032

237552032

@JellyBool

where('id',$id) -> update($request->all()) 

这样,获取都值有

'_method'  '_token' '/article/'.$id

有这些字段,数据库插入数据库失败

JellyBool

@237552032 额,好吧

237552032

@JellyBool

nashJG

jelly,你现在是直接在网址里输入了 article/{id}/edit, 如果我想在html里把这个url作为一个链接标签<a>的href参数,该怎么传这个id参数呢。

笔架山上一阵风

你好,我的日期published_at在edit页面还是当前日期,而不是数据库的

Jabbowocking

赞赞赞

JellyBool

恩,没人强迫你学的,看自己的需求呗 @sunshine217

larry

nice

aiden

你好! 我是初学,这里使用资源路由的话 删除文章怎么处理的delete请求呢?难道文章列表下每个删除标签都要做个表单吗?谢谢!

JellyBool 回复 aiden

好像是生成一个表单就是官方的做法

ForeverPdq

laravel5.3用命令自动生成控制器 这个控制器里为啥不会自动出现一大推方法呢(index,create,update,store等等)

JellyBool 回复 ForeverPdq
php artisan make:controller ArticlesController --resource

这样试试

Jesse123

如果用原生form的话,这些东西都要怎么写啊 /(ㄒoㄒ)/~~ 昨天下载了那个form跟我提示错误用不了。。。

vanesa

请问有没有这些视频的代码啊 老师讲的很快 虽然都听懂了 感觉很多都还是很模糊

JellyBool 回复 vanesa

视频慢放就行了

vanesa 回复 JellyBool

好的 谢谢老师

jjoker

修改完文章信息之后,提交表单,入库之后跳转会文章列表页面。更新的那条文章没有显示出来,需要刷新一下浏览器才能显示出来。这个是什么问题嘞?@JellyBool

JellyBool 回复 jjoker

这么诡异。。。published_at 有仔细检查过逻辑没?

Cyclone

请问下,如果我的Routes.php不用老师您说的那个resource方法的话,那下面那个提交方法怎么填写?patch我试过是不行的。。。
Route::patch('/articles','articlesController@Update');

JellyBool 回复 Cyclone

注册路由之后,在表单使用

{ method('PATCH') }
Cyclone 回复 JellyBool

怎么在表单使用。。。

放在原来method的位置,PS会提醒出错
{!! Form::model($article,['method'=>'PATCH','url'=>'/articles/'.$article->id]) !!}

在新的一行使用,会说没有定义这个method方法。。。
{Form::method(‘PATCH’)}

JellyBool 回复 Cyclone
 { method_field('PATCH') }

这样的吧

Cyclone 回复 JellyBool

额对,是这个。。

后来试过一下又有别的错误是method方法不可用,仔细检查了一下发现路由写了返回
/articles
但是表单的action写的是
/articles/.$article->id
改过来之后就可以正常运行了,谢谢老师!

purebook

其他都没问题,但最后用到update方法了会出现InvalidArgumentException in Carbon.php line 582: Data missing的错误

        $article=Article::findOrFail($id);
        $article->update($request->all());
        return redirect('/articles');
purebook

而注释掉前两句就不报错

purebook

解决了google

Carbon::createFromFormat(‘Y-m-d H:i:s’, ‘2017-01-04 00:52’);我Google了然后吧Article.php中写成这样而不用$date就可以

purebook

还是不对,这样入库时间不对

wenluyang

采用Route::resource 的路由方式 在删除destroy方法时报错:Method [show] does not exist 师傅怎么解决?

JellyBool 回复 wenluyang

你是在哪里触发了 show 这个路由吧

wenluyang 回复 JellyBool

没有写过show 这个路由,只有以下这条
Route::resource(‘trendcat’,‘Admin\TrendcatController’)

百度了下 老外说把destroy这个独立出来:
Route::resource(‘trendcat’,‘Admin\TrendcatController’, [‘only’=> [‘index’,‘create’,‘edit’,‘update’,‘store’]]);
Route::get(’/trendcat/{id}/’,‘Admin\TrendcatController@destroy’);
这样没有错了 不知道是哪里的问题