今天就跟大家聊聊有关怎么在Laravel中动态隐藏API字段,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
& lt; php ? namespace App \ Http \资源; use 阐明\ Http资源\ \ Json \资源; class UsersResource  extends 资源 {/* * *,才能Transform 从而resource into an 数组。 ,* *,才能@param \照亮\ Http \请求 *,才能@return 数组 ,*/,public function  toArray(请求) ,{ return [才能 ,,& # 39;id # 39;,=祝辞,$ this→id, ,,& # 39;名字# 39;,=祝辞,$ this→名称, ,,& # 39;电子邮件,,=在这个→美元的电子邮件 )才能; ,} }
出于某种原因,您可能希望在另一个端点上重新使用该资源类,但隐藏邮件字段。这篇文章就是告诉你如何实现这一点的。
如果你不知道API资源是什么,请查看我之前关于这个的文章。
- <李>
第一印象> composer create-project ——prefer-dist laravel/laravel api-fields cd api-fields touch 数据库/database.sqlite
编辑。env文件,删除数据库设置并使用SQLite
<代码> DB_CONNECTION=SQLite 代码>
继续设置项目
php artisan 迁移 php artisan : resource UsersResource php artisan 使:resource ——collection UsersResourceCollection php artisan : controller UsersController php artisan 修补 工厂(App \用户::类)→*(20)→创建(); 之前退出><>强2 -路由强>
确保在api。php文件中创建一个路由。
<代码>路线::apiResource(& # 39;/用户# 39;& # 39;UsersController& # 39;); 代码>
<强> 3 -控制器强>
控制器代表了期望的目标。在这个例子中,让我们假设在用户列表中,我们只想要所有用户的名字,而在用户显示中,我们只想隐藏电子邮件地址。
& lt; php ? namespace 应用\ Http \控制器; use 应用\ Http资源\ \ UsersResource; use 应用\用户; class UsersController  extends 控制器 {/* * *,才能Display a listing of 从而资源。 ,* *,才能@param User $用户 *,才能@return \照亮\ Http \响应 ,*/,public function 指数(User $ user) ,{ return 才能UsersResource:收集($ user→随意翻阅())→隐藏((& # 39;id # 39;,, & # 39;电子邮件# 39;]); ,}/* * *,才能Display a 用户。 ,* *,才能@param User $用户 *,才能@return \照亮\ Http \响应 ,*/,public function 显示(User 美元用户) ,{ return 才能;UsersResource:使($ user)→隐藏((& # 39;id # 39;]); ,} }为了达到这个目的,我们需要<代码> UsersResourceCollection 代码>和<代码> UsersResource> 代码同时知道如何处理藏调用。
<强> 4 - UsersResource类强>
让我们从,显示方法开始又是;<代码> UsersResource::> 代码将会返回,<代码> UsersResource> 代码的对象。因此,我们应该揭开,隐藏的神秘面纱,它可以存储我们期望从响应中移除的键。
& lt; php ? namespace App \ Http \资源; use 阐明\ Http资源\ \ Json \资源; class UsersResource  extends 资源 {/* * *,才能@var 数组 ,*/,protected withoutFields 美元;=,[]; , ,/* * *,才能Transform 从而resource into an 数组。 ,* *,才能@param \照亮\ Http \请求 *,才能@return 数组 ,*/,public function  toArray(请求) ,{ return 才能;这→美元filterFields ([ ,,& # 39;id # 39;,=祝辞,$ this→id, ,,& # 39;名字# 39;,=祝辞,$ this→名称, ,,& # 39;电子邮件,,=在这个→美元的电子邮件 )才能); ,}/* * *,才能Set 从而keys that 断开连接;supposed 用be filtered 。 ,* *,才能@param array $字段 *,才能@return 这一美元 ,*/,public function 隐藏(array 美元字段) ,{ 这个美元才能→withoutFields =,美元字段; return 才能;$; ,}/* * *,才能Remove 从而filtered 键。 ,* *,才能@param $数组 *,才能@return 数组 ,*/,protected function  filterFields(数组) ,{ return 才能收集(数组)→忘记($ this→withoutFields)→toArray (); ,} }怎么在Laravel中动态隐藏API字段