response-xml
response-xml copied to clipboard
How to add attribute to specific tag from generated XML
So, i use array to send response like this :
$response = [ 'status' => 200, 'message' => 'Success', 'description' => '', 'data' => $user->toArray() ];
when i use return response()->xml($response);
it return this :
<?xml version="1.0"?>
<response>
<status>200</status>
<message>Success</message>
<description></description>
<data>
<id>25</id>
<name>Test 10</name>
<email>[email protected]</email>
<email_verified_at>2021-01-05 12:12:12</email_verified_at>
<photo></photo>
<gender>male</gender>
<role>2</role>
<active>1</active>
<deleted_at></deleted_at>
<remember_token></remember_token>
<created_at>2021-01-07T03:20:02.000000Z</created_at>
<updated_at>2021-01-07T03:20:02.000000Z</updated_at>
</data>
<data>
<id>24</id>
<name>Test 9</name>
<email>[email protected]</email>
<email_verified_at>2021-01-05 12:12:12</email_verified_at>
<photo></photo>
<gender>male</gender>
<role>2</role>
<active>1</active>
<deleted_at></deleted_at>
<remember_token></remember_token>
<created_at>2021-01-07T03:07:26.000000Z</created_at>
<updated_at>2021-01-07T03:07:26.000000Z</updated_at>
</data>
</response>
i want to add id attribute to <data>
tag like this :
<response>
<status>200</status>
<message>Success</message>
<description></description>
<data id="user-25">
<id>25</id>
<name>Test 10</name>
<email>[email protected]</email>
<email_verified_at>2021-01-05 12:12:12</email_verified_at>
<photo></photo>
<gender>male</gender>
<role>2</role>
<active>1</active>
<deleted_at></deleted_at>
<remember_token></remember_token>
<created_at>2021-01-07T03:20:02.000000Z</created_at>
<updated_at>2021-01-07T03:20:02.000000Z</updated_at>
</data>
<data id="user-24">
<id>24</id>
<name>Test 9</name>
<email>[email protected]</email>
<email_verified_at>2021-01-05 12:12:12</email_verified_at>
<photo></photo>
<gender>male</gender>
<role>2</role>
<active>1</active>
<deleted_at></deleted_at>
<remember_token></remember_token>
<created_at>2021-01-07T03:07:26.000000Z</created_at>
<updated_at>2021-01-07T03:07:26.000000Z</updated_at>
</data>
</response>
Any ideas to do that?
oh sorry, i just figured it out.
just before i put $user
to $response
array, i add _attributes
index in $user
array like this :
foreach($user as $key => $value){
$user[$key]['_attributes'] = [
'id' => $value->id
];
}
now it return :
<?xml version="1.0"?>
<response>
<status>200</status>
<message>Success</message>
<description></description>
<data id="25">
<id>25</id>
<name>Test 10</name>
<email>[email protected]</email>
<email_verified_at>2021-01-05 12:12:12</email_verified_at>
<photo></photo>
<gender>male</gender>
<role>2</role>
<active>1</active>
<deleted_at></deleted_at>
<remember_token></remember_token>
<created_at>2021-01-07T03:20:02.000000Z</created_at>
<updated_at>2021-01-07T03:20:02.000000Z</updated_at>
</data>
<data id="24">
<id>24</id>
<name>Test 9</name>
<email>[email protected]</email>
<email_verified_at>2021-01-05 12:12:12</email_verified_at>
<photo></photo>
<gender>male</gender>
<role>2</role>
<active>1</active>
<deleted_at></deleted_at>
<remember_token></remember_token>
<created_at>2021-01-07T03:07:26.000000Z</created_at>
<updated_at>2021-01-07T03:07:26.000000Z</updated_at>
</data>
</response>
references : https://github.com/mtownsend5512/response-xml/issues/1
Excellent. Hope this is added to the main documentation.