PHPackages                             csun-metalab/laravel-support - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. csun-metalab/laravel-support

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

csun-metalab/laravel-support
============================

Composer package for Laravel 5.0 and above to allow for feedback and support requests within an application

1.0.0(8y ago)02.8kMITPHPPHP &gt;=5.5.9

Since Jan 26Pushed 2y ago1 watchersCompare

[ Source](https://github.com/PioneeringTechLab/laravel-support)[ Packagist](https://packagist.org/packages/csun-metalab/laravel-support)[ RSS](/packages/csun-metalab-laravel-support/feed)WikiDiscussions dev Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

Laravel Support Package
=======================

[](#laravel-support-package)

Composer package for Laravel 5.0 and above to allow for feedback and support requests within an application.

This package adds the ability to accept feedback and support submissions out of the box with minimal code updates. Information about the currently-authenticated user will also be included with the messages.

MySQL database functionality is enabled by default to promote storage and persistence of messages that are sent out. This functionality is optional, however, so this package does not require a database in order to perform the sending of requests.

**NOTE:** This package relies on the [mail functionality provided by Laravel](#mail-documentation) and the settings can differ based upon Laravel version. Please ensure your mail settings in your `.env` file are valid.

Table of Contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
    - [Composer, Environment, and Service Provider](#composer-environment-and-service-provider)
        - [Composer](#composer)
        - [Environment](#environment)
        - [Service Provider](#service-provider)
    - [Route Installation](#route-installation)
        - [Laravel 5.1 and above](#laravel-51-and-above)
        - [Laravel 5.0](#laravel-50)
    - [Publish Everything](#publish-everything)
- [Required Environment Variables](#required-environment-variables)
- [Optional Environment Variables](#optional-environment-variables)
- [Routing](#routing)
    - [Display Feedback Form](#display-feedback-form)
    - [Process Feedback Form](#process-feedback-form)
    - [Display Support Request Form](#display-support-request-form)
    - [Process Support Request Form](#process-support-request-form)
- [Migrations](#migrations)
    - [Feedback Submissions](#feedback-submissions)
    - [Support Request Submissions](#support-request-submissions)
- [Models](#models)
    - [Feedback Submissions](#feedback-submissions-1)
    - [Support Request Submissions](#support-request-submissions-1)
- [Custom Messages](#custom-messages)
- [Custom Form Requests](#custom-form-requests)
    - [Feedback Form Request](#feedback-form-request)
        - [Validation Rules](#validation-rules)
        - [Validation Messages](#validation-messages)
    - [Support Form Request](#support-form-request)
        - [Validation Rules](#validation-rules-1)
        - [Validation Messages](#validation-messages-1)
- [Sending Mail](#sending-mail)
    - [Custom Mailable Instances](#custom-mailable-instances)
        - [Feedback Mailable](#feedback-mailable)
        - [Support Request Mailable](#support-request-mailable)
    - [Mail Facade Fallback](#mail-facade-fallback)
- [Controllers](#controllers)
    - [Feedback Controller](#feedback-controller)
    - [Support Request Controller](#support-request-controller)
- [Views](#views)
    - [Emails](#emails)
    - [Forms](#forms)
- [Resources](#resources)
    - [Mail Documentation](#mail-documentation)
    - [Queue Documentation](#queue-documentation)
    - [Localization Documentation](#localization-documentation)
    - [Form Request Validation Documentation](#form-request-validation-documentation)

Installation
------------

[](#installation)

### Composer, Environment, and Service Provider

[](#composer-environment-and-service-provider)

#### Composer

[](#composer)

To install from Composer, use the following command:

```
composer require csun-metalab/laravel-support

```

#### Environment

[](#environment)

Now, add the following line(s) to your `.env` file:

```
FEEDBACK_RECIPIENT=
SUPPORT_RECIPIENT=

```

You may also elect to add the following optional line(s) to your `.env` file to customize the functionality further. These values are shown with their defaults. They are explained in detail within the [Optional Environment Variables](#optional-environment-variables) section further down:

```
FEEDBACK_FROM_ADDR=donotreply@example.com
FEEDBACK_FROM_NAME="Do Not Reply"

SUPPORT_FROM_ADDR=donotreply@example.com
SUPPORT_FROM_NAME="Do Not Reply"

FEEDBACK_TITLE="New Feedback Submission"
SUPPORT_TITLE="New Support Request"

SUBMITTER_ID_ATTR=id
SUBMITTER_NAME_ATTR=name
SUBMITTER_EMAIL_ATTR=email

ALLOW_APPLICATION_NAME_OVERRIDE=false
SEND_COPY_TO_SUBMITTER=false

FEEDBACK_TYPE=text
SUPPORT_TYPE=text

SUPPORT_ENABLE_DB=true

```

If you want to keep the defaults for the given values, you do not need to include them in your `.env` file.

#### Service Provider

[](#service-provider)

Add the service provider to your `providers` array in `config/app.php` in Laravel as follows:

```
'providers' => [
   //...

   CSUNMetaLab\Support\Providers\SupportServiceProvider::class,

   // You can also use this based on Laravel convention:
   // 'CSUNMetaLab\Support\Providers\SupportServiceProvider',

   //...
],

```

### Route Installation

[](#route-installation)

You will now need to add the various routes for the package. They are named routes since you can then customize the route paths based upon your own application. The package will use the route names instead of the paths when performing operations.

#### Laravel 5.1 and above

[](#laravel-51-and-above)

Add the following group to your `routes.php` or `routes/web.php` file depending on Laravel version to enable the routes:

```
Route::group(['middleware' => ['auth']], function () {
  Route::get('support', '\CSUNMetaLab\Support\Http\Controllers\SupportController@create')->name('support.create');
  Route::post('support', '\CSUNMetaLab\Support\Http\Controllers\SupportController@store')->name('support.store');

  Route::get('feedback', '\CSUNMetaLab\Support\Http\Controllers\FeedbackController@create')->name('feedback.create');
  Route::post('feedback', '\CSUNMetaLab\Support\Http\Controllers\FeedbackController@store')->name('feedback.store');
});

```

#### Laravel 5.0

[](#laravel-50)

Add the following group to your `routes.php` file to enable the routes:

```
Route::group(['middleware' => ['auth']], function () {
  Route::get('support', [
    'uses' => '\CSUNMetaLab\Support\Http\Controllers\SupportController@create',
    'as' => 'support.create',
  ]);
  Route::post('support', [
    'uses' => '\CSUNMetaLab\Support\Http\Controllers\SupportController@store',
    'as' => 'support.store',
  ]);
  Route::get('feedback', [
    'uses' => '\CSUNMetaLab\Support\Http\Controllers\FeedbackController@create',
    'as' => 'feedback.create',
  ]);
  Route::post('feedback', [
    'uses' => '\CSUNMetaLab\Support\Http\Controllers\FeedbackController@store',
    'as' => 'feedback.store',
  ]);
});

```

### Publish Everything

[](#publish-everything)

Finally, run the following Artisan command to publish everything:

```
php artisan vendor:publish

```

The following assets are published:

- Configuration (tagged as `config`) - these go into your `config` directory
- Migrations (tagged as `migrations`) - these go into your `database/migrations` directory
- Models (tagged as `models`) - these go into your `app` directory
- Messages (tagged as `lang`) - these go into your `resources/lang/en` directory as `support.php`
- Views (tagged as `views`) - these go into your `resources/views/vendor/support` directory

Required Environment Variables
------------------------------

[](#required-environment-variables)

You added two environment variables to your `.env` file that control the sending of messages via email.

### FEEDBACK\_RECIPIENT

[](#feedback_recipient)

The address(es) to use as the recipient(s) for the feedback emails. Multiple recipients can be specified if separated with a pipe character.

Example (single): `feedback@example.com`

Example (multiple): `info@example.com|feedback@example.com`

### SUPPORT\_RECIPIENT

[](#support_recipient)

The address(es) to use as the recipient(s) for the support request emails. Multiple recipients can be specified if separated with a pipe character.

Example (single): `support@example.com`

Example (multiple): `help@example.com|support@example.com`

Optional Environment Variables
------------------------------

[](#optional-environment-variables)

There are several optional environment variables that may be added to customize the functionality of the package even further.

### FEEDBACK\_FROM\_ADDR

[](#feedback_from_addr)

The email address to use as the sender when sending a feedback message.

If this value has not been specified, the value of `MAIL_FROM` in your `.env` value will be used instead. If there is no `MAIL_FROM` value to use as a fallback, an exception will be thrown upon sending the feedback message.

Default value is either the `MAIL_FROM` value or `null`.

### FEEDBACK\_FROM\_NAME

[](#feedback_from_name)

The email display name to use when sending a feedback message.

Default is `Do Not Reply`.

### SUPPORT\_FROM\_ADDR

[](#support_from_addr)

The email address to use as the sender when sending a support request message.

If this value has not been specified, the value of `MAIL_FROM` in your `.env` value will be used instead. If there is no `MAIL_FROM` value to use as a fallback, an exception will be thrown upon sending the support request message.

Default value is either the `MAIL_FROM` value or `null`.

### SUPPORT\_FROM\_NAME

[](#support_from_name)

The email display name to use when sending a support request message.

The "From" address will be determined by the `MAIL_FROM` environment value outside of this package.

Default is `Do Not Reply`.

### FEEDBACK\_TITLE

[](#feedback_title)

The title of the email when sending a feedback message.

Default is `New Feedback Submission`.

### SUPPORT\_TITLE

[](#support_title)

The title of the email when sending a support request message.

Default is `New Support Request`.

### SUBMITTER\_ID\_ATTR

[](#submitter_id_attr)

The attribute in the configured `User` model that serves as its primary key.

Default is `id`.

### SUBMITTER\_NAME\_ATTR

[](#submitter_name_attr)

The attribute in the configured `User` model that serves as its human-readable display name.

This value will be included when email messages are sent.

Default is `name`.

### SUBMITTER\_EMAIL\_ATTR

[](#submitter_email_attr)

The attribute in the configured `User` model that serves as its email address.

This value will be included when email messages are sent.

Default is `email`.

### ALLOW\_APPLICATION\_NAME\_OVERRIDE

[](#allow_application_name_override)

Determines whether the name of the application reported in the message can be overridden by a request input value with the name of `application_name`.

If this is set to `true`, it can promote the creation of a central support request system that allows the user to pick the application where the issue arose, for example. If the request value does not exist, the value of the `app.name` configuration entry will be used instead.

Default value is `false`.

### SEND\_COPY\_TO\_SUBMITTER

[](#send_copy_to_submitter)

Boolean that describes whether the submitter should receive a copy of the message that was sent.

Default is `false`.

### FEEDBACK\_TYPE

[](#feedback_type)

Determines the type of feedback email message that will be sent. Valid values are `text` and `html`.

Default value is `text`.

### SUPPORT\_TYPE

[](#support_type)

Determines the type of support request email message that will be sent. Valid values are `text` and `html`.

Default value is `text`.

### SUPPORT\_ENABLE\_DB

[](#support_enable_db)

MySQL database support is enabled by default so you will need to have a valid database connection. Database support can be disabled by setting this value to `false`. This package can still perform the sending of email messages even with database support disabled.

The database tables where the feedback and support submissions will be stored is determined by the published models.

The migrations must be run prior to any database queries.

Default is `true`.

Routing
-------

[](#routing)

In all cases for the routes exposed by the package, you are free to modify the path of the route but keep these two constraints in mind:

1. Please **do not** modify the HTTP method of the routes unless you are also planning to modify the published views.
2. Please **do not** modify the route names since both the underlying controller functionality as well as the published views use them.

### Display Feedback Form

[](#display-feedback-form)

- Path: `/feedback`
- HTTP method: `GET`
- Route name: `feedback.create`

### Process Feedback Form

[](#process-feedback-form)

- Path: `/feedback`
- HTTP method: `POST`
- Route name: `feedback.store`

### Display Support Request Form

[](#display-support-request-form)

- Path: `/support`
- HTTP method: `GET`
- Route name: `support.create`

### Process Support Request Form

[](#process-support-request-form)

- Path: `/support`
- HTTP method: `POST`
- Route name: `support.store`

Migrations
----------

[](#migrations)

There are two migrations that are included with this package. They are intended to store information about the feedback and support request submissions that have been received from the application.

The name of the application from which the message was submitted as well as the ID of the authenticated user are stored in both cases as well.

You are also not required to use these migrations. The associated models can be pointed at any database table as long as they match the same structure.

### Feedback Submissions

[](#feedback-submissions)

Table name is `feedback_submissions`.

- `submission_id`: auto-incrementing integer primary key
- `application_name`: nullable name of the application from where the message was submitted; defaults to the value of the `app.name` config element
- `user_id`: ID of the authenticated user that submitted the message
- `content`: body text of the feedback message
- `created_at`: timestamp describing when the message was sent
- `updated_at`: nullable timestamp describing when the message was updated, if at all

### Support Request Submissions

[](#support-request-submissions)

Table name is `support_submissions`.

- `submission_id`: auto-incrementing integer primary key
- `application_name`: nullable name of the application from where the message was submitted; defaults to the value of the `app.name` config element
- `user_id`: ID of the authenticated user that submitted the message
- `impact`: the impact of the issue resulting in the request (could be `low`, `medium`, or `high` for example)
- `content`: body text of the support request message
- `created_at`: timestamp describing when the message was sent
- `updated_at`: nullable timestamp describing when the message was updated, if at all

Models
------

[](#models)

The models that will be used to store the feedback and support request submissions can be configured in the published `config/support.php` file within the `database.models` section.

Exceptions will be thrown if the models cannot be found when used in the controllers. However, the email messages themselves will still go out.

The tables and primary keys of each model can also be configured from within the models themselves.

### Feedback Submissions

[](#feedback-submissions-1)

The full namespace to the model is `CSUNMetaLab\Support\Models\FeedbackSubmission`.

- Table: `feedback_submissions`
- Primary key: `submission_id`
- Fillable: `application_name`, `user_id`, `content`

The exception that may be thrown is an instance of `CSUNMetaLab\Support\Exceptions\FeedbackModelNotFoundException`.

### Support Request Submissions

[](#support-request-submissions-1)

The full namespace to the model is `CSUNMetaLab\Support\Models\Supportubmission`.

- Table: `support_submissions`
- Primary key: `submission_id`
- Fillable: `application_name`, `user_id`, `impact`, `content`

The exception that may be thrown is an instance of `CSUNMetaLab\Support\Exceptions\SupportModelNotFoundException`.

Custom Messages
---------------

[](#custom-messages)

The custom messages for this package can be found in `resources/lang/en/support.php` by default. The messages can also be overridden as needed.

You may also translate the messages in that file to other languages to promote localization, as well.

The package reads from this file (using the configured localization) for all messages it must display to the user or write to any logs.

Custom Form Requests
--------------------

[](#custom-form-requests)

The controllers leverage custom form request classes in order to accept and process the input. Each form request exposes custom validation rules and error messages.

### Feedback Form Request

[](#feedback-form-request)

This class is namespaced as `CSUNMetaLab\Support\Http\Requests\FeedbackFormRequest`.

Most of the data required for processing will be added by the matching controller so there are not many validation rules for this request.

#### Validation Rules

[](#validation-rules)

- `content.required`: the `content` field must have a non-null value in the request

#### Validation Messages

[](#validation-messages)

- `support.errors.v.feedback.content.required`: the `content` field has no input

### Support Form Request

[](#support-form-request)

This class is namespaced as `CSUNMetaLab\Support\Http\Requests\SupportFormRequest`.

#### Validation Rules

[](#validation-rules-1)

- `impact.required`: the `impact` field must have a non-null value in the request
- `impact.in`: the value of the `impact` field be within the array values in the `impact` key within `config/support.php`
- `content.required`: the `content` field must have a non-null value in the request

#### Validation Messages

[](#validation-messages-1)

- `support.errors.v.support.impact.required`: the `impact` field has no input
- `support.errors.v.support.impact.in`: the value of the `impact` field is invalid
- `support.errors.v.support.content.required`: the `content` field has no input

Sending Mail
------------

[](#sending-mail)

The feedback and support request messages will be sent differently depending on the version of Laravel in which the package has been installed.

In all cases, however, the messages will always request to be queued so this functionality can be used in conjunction with [some kind of Laravel queue](#queue-documentation) if necessary.

### Custom Mailable Instances

[](#custom-mailable-instances)

Please note that the custom queueable instances of `Illuminate\Mail\Mailable` will only be used if that class exists.

Therefore, these instances will only be used in Laravel 5.3 and above.

#### Feedback Mailable

[](#feedback-mailable)

This class is namespaced as `CSUNMetaLab\Support\Mail\FeedbackMailMessage`.

When building this mailable, the `emails.feedback` view will be used inside of the `resources/views/vendor/support` directory.

The following variables are exposed to the view via public properties in the class:

- `$submitter_name`: the name of the individual submitting the message
- `$submitter_email`: the email address of the individual submitting the message
- `$application_name`: the name of the application from where the message is being submitted
- `$content`: the body content of the message

#### Support Request Mailable

[](#support-request-mailable)

This class is namespaced as `CSUNMetaLab\Support\Mail\SupportMailMessage`.

When building this mailable, the `emails.support` view will be used inside of the `resources/views/vendor/support` directory.

The following variables are exposed to the view via public properties in the class:

- `$submitter_name`: the name of the individual submitting the message
- `$submitter_email`: the email address of the individual submitting the message
- `$application_name`: the name of the application from where the message is being submitted
- `$impact`: the impact of the issue that resulted in the support request
- `$content`: the body content of the message

### Mail Facade Fallback

[](#mail-facade-fallback)

The `Mail` facade will be used in conjunction with its `queue()` method in Laravel 5.0 - 5.2 since the concept of mailables did not yet exist.

Controllers
-----------

[](#controllers)

### Feedback Controller

[](#feedback-controller)

This class is namespaced as `CSUNMetaLab\Support\Http\Controllers\FeedbackController`.

#### Showing the Feedback Form

[](#showing-the-feedback-form)

The `create()` method shows the `feedback.blade.php` view inside of the `resources/views/vendor/support/forms` directory.

#### Processing the Feedback Data

[](#processing-the-feedback-data)

The `store()` method performs the following steps to process the feedback submission:

1. Checks for a valid sender address. If one does not exist, an instance of `CSUNMetaLab\Support\Exceptions\InvalidFeedbackSenderException` will be thrown.
2. Resolves the ID, name, and email address of the currently-authenticated user dynamically.
3. Makes a decision based upon whether the `Illuminate\Mail\Mailable` class exists.
    - If the class exists, it resolves an instance of the [feedback mailable](#feedback-mailable) and uses that to send the message.
    - If the class does not exist, the `Mail` facade is used directly to send the message.
4. Sends the feedback email message to the desired recipient(s)
5. If database support is enabled, it performs the following steps:
    1. Checks for a valid feedback submission model. If the model does not exist, an instance of `CSUNMetaLab\Support\Exceptions\FeedbackModelNotFoundException` will be thrown.
    2. Invokes the `create()` method on the model to save the submitted data to the database
6. Redirects back using the `redirect()->back()` method and adds a flash message called `success` that represents the text of the success message.

### Support Request Controller

[](#support-request-controller)

#### Showing the Support Request Form

[](#showing-the-support-request-form)

The `create()` method shows the `support.blade.php` view inside of the `resources/views/vendor/support/forms` directory.

#### Processing the Support Request Data

[](#processing-the-support-request-data)

The `store()` method performs the following steps to process the support request submission:

1. Checks for a valid sender address. If one does not exist, an instance of `CSUNMetaLab\Support\Exceptions\InvalidSupportSenderException` will be thrown.
2. Resolves the ID, name, and email address of the currently-authenticated user dynamically.
3. Makes a decision based upon whether the `Illuminate\Mail\Mailable` class exists.
    - If the class exists, it resolves an instance of the [support request mailable](#support-request-mailable) and uses that to send the message.
    - If the class does not exist, the `Mail` facade is used directly to send the message.
4. Sends the support request message to the desired recipient(s)
5. If database support is enabled, it performs the following steps:
    1. Checks for a valid support submission model. If the model does not exist, an instance of `CSUNMetaLab\Support\Exceptions\SupportModelNotFoundException` will be thrown.
    2. Invokes the `create()` method on the model to save the submitted data to the database
6. Redirects back using the `redirect()->back()` method and adds a flash message called `success` that represents the text of the success message.

Views
-----

[](#views)

### Emails

[](#emails)

#### Feedback

[](#feedback)

The template for the feedback email exists as `feedback.blade.php` within the `resources/views/vendor/support/emails` directory. The following variables are exposed to the view by either a mailable or the direct invocation of methods on the `Mail` facade:

- `$submitter_name`: the name of the individual submitting the message
- `$submitter_email`: the email address of the individual submitting the message
- `$application_name`: the name of the application from where the message is being submitted
- `$content`: the body content of the message

The template is structured as merely a text-based template (there is no HTML in it by default) to promote the ability to send to some kind of automated issue tracking system. You are free to modify the template however you wish, of course.

#### Support Request

[](#support-request)

The template for the feedback email exists as `support.blade.php` within the `resources/views/vendor/support/emails` directory. The following variables are exposed to the view by either a mailable or the direct invocation of methods on the `Mail` facade:

- `$submitter_name`: the name of the individual submitting the message
- `$submitter_email`: the email address of the individual submitting the message
- `$application_name`: the name of the application from where the message is being submitted
- `$impact`: the impact of the issue that resulted in the support request
- `$content`: the body content of the message

The template is structured as merely a text-based template (there is no HTML in it by default) to promote the ability to send to some kind of automated issue tracking system. You are free to modify the template however you wish, of course.

### Forms

[](#forms)

#### Feedback

[](#feedback-1)

The template for the feedback form exists as `feedback.blade.php` within the `resources/views/vendor/support/forms` directory. The following variables are exposed to the view by the matching controller:

- `$submitter_name`: the name of the individual submitting the message
- `$submitter_email`: the email address of the individual submitting the message
- `$application_name`: the name of the application from where the message is being submitted

The template is structured as a raw HTML document using Bootstrap 4. You are free to modify the template to match your application, of course.

#### Support Request

[](#support-request-1)

The template for the support request form exists as `support.blade.php` within the `resources/views/vendor/support/forms` directory. The following variables are exposed to the view by the matching controller:

- `$submitter_name`: the name of the individual submitting the message
- `$submitter_email`: the email address of the individual submitting the message
- `$application_name`: the name of the application from where the message is being submitted
- `$impact`: the associative array of impacts that allows the individual to describe the severity of the problem

The template is structured as a raw HTML document using Bootstrap 4. You are free to modify the template to match your application, of course.

Resources
---------

[](#resources)

### Mail Documentation

[](#mail-documentation)

- [Mail in Laravel 5.0](https://laravel.com/docs/5.0/mail)
- [Mail in Laravel 5.1](https://laravel.com/docs/5.1/mail)
- [Mail in Laravel 5.2](https://laravel.com/docs/5.2/mail)
- [Mail in Laravel 5.3](https://laravel.com/docs/5.3/mail)
- [Mail in Laravel 5.4](https://laravel.com/docs/5.4/mail)
- [Mail in Laravel 5.5](https://laravel.com/docs/5.5/mail)

### Queue Documentation

[](#queue-documentation)

- [Queues in Laravel 5.0](https://laravel.com/docs/5.0/queues)
- [Queues in Laravel 5.1](https://laravel.com/docs/5.1/queues)
- [Queues in Laravel 5.2](https://laravel.com/docs/5.2/queues)
- [Queues in Laravel 5.3](https://laravel.com/docs/5.3/queues)
- [Queues in Laravel 5.4](https://laravel.com/docs/5.4/queues)
- [Queues in Laravel 5.5](https://laravel.com/docs/5.5/queues)

### Localization Documentation

[](#localization-documentation)

- [Localization in Laravel 5.0](https://laravel.com/docs/5.0/localization)
- [Localization in Laravel 5.1](https://laravel.com/docs/5.1/localization)
- [Localization in Laravel 5.2](https://laravel.com/docs/5.2/localization)
- [Localization in Laravel 5.3](https://laravel.com/docs/5.3/localization)
- [Localization in Laravel 5.4](https://laravel.com/docs/5.4/localization)
- [Localization in Laravel 5.5](https://laravel.com/docs/5.5/localization)

### Form Request Validation Documentation

[](#form-request-validation-documentation)

- [Form Request Validation in Laravel 5.0](https://laravel.com/docs/5.0/validation#form-request-validation)
- [Form Request Validation in Laravel 5.1](https://laravel.com/docs/5.1/validation#form-request-validation)
- [Form Request Validation in Laravel 5.2](https://laravel.com/docs/5.2/validation#form-request-validation)
- [Form Request Validation in Laravel 5.3](https://laravel.com/docs/5.3/validation#form-request-validation)
- [Form Request Validation in Laravel 5.4](https://laravel.com/docs/5.4/validation#form-request-validation)
- [Form Request Validation in Laravel 5.5](https://laravel.com/docs/5.5/validation#form-request-validation)

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity18

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

3028d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ef2f088dbe515e7505204053ba4b89fab631db23d7638297853dc697adf7ddc4?d=identicon)[matthewfritz](/maintainers/matthewfritz)

![](https://www.gravatar.com/avatar/5c86fd91fdf698dd5c9ceffd3dce175a6ae3000d00f4c00bf65b2e97f19072a1?d=identicon)[csun-metalab](/maintainers/csun-metalab)

![](https://www.gravatar.com/avatar/eb2e4b7e97c47122102e9eca3a2707f31d812f27d774197f62f27f130d128e49?d=identicon)[luisjg](/maintainers/luisjg)

---

Top Contributors

[![matthewfritz](https://avatars.githubusercontent.com/u/1715181?v=4)](https://github.com/matthewfritz "matthewfritz (33 commits)")

### Embed Badge

![Health badge](/badges/csun-metalab-laravel-support/health.svg)

```
[![Health](https://phpackages.com/badges/csun-metalab-laravel-support/health.svg)](https://phpackages.com/packages/csun-metalab-laravel-support)
```

###  Alternatives

[wpbp/generator

Generator of Wordpress Plugin Boilerplate Powered

832.3k](/packages/wpbp-generator)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
