当前位置: 首页 > 后端技术 > PHP

在Eloquent中封装URL属性以统一视图中的路由

时间:2023-03-29 15:31:35 PHP

在Eloquent中封装URL属性以在视图中统一路由Laravel应用程序中有几十个甚至数百个视图并不少见。您很快就会失去对视图中使用的路由管理的控制。可以想象如果你在视图中做了很多这样的事情。$user->id])}}">{{$user->name}}如果你想改变路由名称或修改默认查询参数值需要在整个应用程序中进行大量的字符串替换操作,但这会带来重复的工作量,并且可能会遗漏一些地方。那么我们可以做些什么来更好地处理这个问题呢?下面有两种实现。第一个:修改Eloquent//app/Models/User.phpurl}}">{{$user->name}}感觉很干净吧?但对于高级开发人员,您可能希望采用下一种方法。第二种方式。乍一看,在Eloquent中使用URLPresenter可能看起来很熟悉。是的,这里我们定义了一个url属性,但是和一般写法不同的是,我们会返回一个presenter实例。//app/Models/User.phpuser=$user;}公共函数__get($key){if(method_exists($this,$key)){return$this->$key();}返回$this->$key;}publicfunctiondelete(){returnroute('users.delete',$this->user);}publicfunctionedit(){returnroute('users.edit',$this->user);}publicfunctionshow(){returnroute('users.show',$this->user);}publicfunctionupdate(){returnroute('users.update',$this->user);}}然后就可以这样使用了<ahref="{{$user->url->show}}">{{$user->name}}如上,当前视图并不关心我们如何确定URL,它只是返回一个URL的好处是你只需要编辑两个文件而不是数百个文件来修改视图中的任何路由。PHP的更多用法,请到PHPCasts社区