Laravel 5

Laravel 5 Message Bags: Merging Additional Messages With merge

Author

John Koster

Published on April 21, 2018

The merge method is used to combine, or merge, the contents of the MessageBag instance with the provided $messages. The $messages can be any valid array or an object instance that implements the "Illuminate\Contracts\Support\MessageProvider" interface. The merge method modifies the original MessageBag instance and returns a reference to the instance.

Signature

The signature of the merge method is:

1public function merge(
2 $messages
3);

Example Use

For example, the array:

1$arrayToMerge = [
2 'username' => [
3 'The username is required',
4 ],
5 'password' => [
6 'The passwords do not match',
7 ]
8];

can be merged with the following message bag:

1use Illuminate\Support\MessageBag;
2 
3// Create a new MessageBag instance.
4$messages = new MessageBag;
5$messages->add(
6 'username',
7 'That username has already been taken'
8);

like so:

1// Merge the $arrayToMerge with the $messages
2$messages->merge($arrayToMerge);
3 
4// Get the messages as an array.
5$messageArray = $messages->all();

After the above code has executed, the $messageArray variable will be an array and contain a value similar to the following output:

1array (size=3)
2 0 => string 'That username has already been taken'
3 1 => string 'The username is required'
4 2 => string 'The passwords do not match'

Because the MessageBag class implements the MessageProvider interface, a MessageBag instance can be supplied as the argument for the $messages parameter:

1use Illuminate\Support\MessageBag;
2 
3// Create the first MessageBag instance.
4$firstMessageBag = new MessageBag([
5 'username' => 'The username is required'
6]);
7 
8// Create the second MessageBag instance.
9$secondMessageBag = new MessageBag([
10 'username' => 'That username has already been taken'
11]);
12 
13// Merge the two MessageBags.
14$firstMessageBag->merge($secondMessageBag);
15 
16// Get the messages as an array.
17$messageArray = $firstMessageBag->all();

After the above code has executed the $messageArray variable will be an array and contain a value similar to the following output:

1array
2 0 => string 'The username is required'
3 1 => string 'That username has already been taken'