Generating your first pass | laravel-mobile-pass | Spatie

 SPATIE

  Laravel Mobile Pass
======================

spatie.be/open-source

  [Docs](https://spatie.be/docs)  [Laravel-mobile-pass](https://spatie.be/docs/laravel-mobile-pass/v1)  Basic-usage  Generating your first pass

 Version   v1

 Other versions for crawler [v1](https://spatie.be/docs/laravel-mobile-pass/v1)

- [ Introduction ](https://spatie.be/docs/laravel-mobile-pass/v1/introduction)
- [ Support us ](https://spatie.be/docs/laravel-mobile-pass/v1/support-us)
- [ Requirements ](https://spatie.be/docs/laravel-mobile-pass/v1/requirements)
- [ Installation &amp; setup ](https://spatie.be/docs/laravel-mobile-pass/v1/installation-setup)
- [ Questions and issues ](https://spatie.be/docs/laravel-mobile-pass/v1/questions-issues)
- [ Changelog ](https://spatie.be/docs/laravel-mobile-pass/v1/changelog)
- [ About us ](https://spatie.be/docs/laravel-mobile-pass/v1/about-us)

Basic usage
-----------

- [ Introduction ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/introduction)
- [ Getting credentials from Apple ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/getting-credentials-from-apple)
- [ Generating your first pass ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/generating-your-first-pass)
- [ Associating passes with models ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/associating-passes-with-models)
- [ Updating passes ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/updating-passes)
- [ Storing mobile passes ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/storing-mobile-passes)
- [ Downloading passes ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/downloading-passes)
- [ Using passes as mail attachments ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/using-passes-as-mail-attachments)
- [ Available pass types ](https://spatie.be/docs/laravel-mobile-pass/v1/basic-usage/available-pass-types)

Advanced usage
--------------

- [ Customizing actions ](https://spatie.be/docs/laravel-mobile-pass/v1/advanced-usage/customizing-actions)
- [ Customizing models ](https://spatie.be/docs/laravel-mobile-pass/v1/advanced-usage/customizing-models)
- [ Reading stored passes ](https://spatie.be/docs/laravel-mobile-pass/v1/advanced-usage/reading-stored-passes)

 Generating your first pass
==========================

The package offers \[various builder classes\](TODO: add link) that you can use to build passes. These builders all have specialized methods to build their specific passes.

Here's an example of how you can generate a basic boarding pass:

```
use Spatie\LaravelMobilePass\Builders\Apple\AirlinePassBuilder;

$mobilePass = AirlinePassBuilder::make()
    ->setOrganisationName('My organisation')
    ->setSerialNumber(123456)
    ->setDescription('Hello!')
    ->setHeaderFields(
        FieldContent::make('flight-no')
            ->withLabel('Flight')
            ->withValue('EY066'),
        FieldContent::make('seat')
            ->withLabel('Seat')
            ->withValue('66F')
    )
    ->setPrimaryFields(
        FieldContent::make('departure')
            ->withLabel('Abu Dhabi International')
            ->withValue('ABU'),
        FieldContent::make('destination')
            ->withLabel('London Heathrow')
            ->withValue('LHR'),
    )
    ->setSecondaryFields(
        FieldContent::make('name')
            ->withLabel('Name')
            ->withValue('Dan Johnson'),
        FieldContent::make('gate')
            ->withLabel('Gate')
            ->withValue('D68')
    )
    ->setAuxiliaryFields(
        FieldContent::make('departs')
            ->withLabel('Departs')
            ->withValue(now()->toIso8601String()),
        FieldContent::make('class')
            ->withLabel('Class')
            ->withValue('Economy'),
    )
    ->setIconImage(
        Image::make(
            x1Path: getTestSupportPath('images/your-thumbnail.png')
        )
    )

    // Now set the semantic fields.
    ->setDepartureAirportCode('AUH')
    ->setDepartureAirportName('Abu Dhabi Intl')
    ->setDepartureLocationDescription('Abu Dhabi Intl')
    ->setDestinationAirportCode('LHR')
    ->setDestinationAirportName('London Heathrow')
    ->setDestinationLocationDescription('Abu Dhabi Intl')
    ->setSeats(Seat::make(
        number: '66F',
    ));
    ->save();
```

The `save` method will return a newly created `MobilePass` model.
