PHPackages                             sukohi/fox-tail - 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. sukohi/fox-tail

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

sukohi/fox-tail
===============

A Laravel package to manage routes user accessed.

1.0.2(9y ago)013MITPHP

Since Jun 15Pushed 9y ago1 watchersCompare

[ Source](https://github.com/SUKOHI/FoxTail)[ Packagist](https://packagist.org/packages/sukohi/fox-tail)[ RSS](/packages/sukohi-fox-tail/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependencies (1)Versions (5)Used By (0)

FoxTail
=======

[](#foxtail)

A Laravel package to manage routes user accessed. (L5.4+)

Installation
============

[](#installation)

Execute the next command.

```
composer require sukohi/fox-tail:1.*

```

Set the service provider in `config/app.php`.

```
'providers' => [
    ...Others...,
    Sukohi\FoxTail\FoxTailServiceProvider::class,
]

```

Also alias

```
'aliases' => [
    ...Others...,
    'FoxTail'   => Sukohi\FoxTail\Facades\FoxTail::class,
]

```

Then execute the next commands.

```
php artisan vendor:publish

```

Now you have `config/fox_tail.php`.

Definition
==========

[](#definition)

- Tail: A set of data a user will access. It contains `name(route name or uri)`, `method`, `url`, `full_url` and `parameters`.
- Story: A set of `Tails` user could access.

Preparation
===========

[](#preparation)

(Middleware)

You need to set FoxTailMiddleware in `\App\Http\Kernel.php` like so.

```
protected $routeMiddleware = [
    ...Others...,
    'fox_tail' => \Sukohi\FoxTail\Middleware\FoxTailMiddleware::class
];

```

And also in `routes/web.php`

```
Route::middleware(['fox_tail'])->group(function(){

    Route::get('/my/page/1', 'HomeController@mypage_1')->name('my-page-1');
    Route::get('/my/page/2', 'HomeController@mypage_2')->name('my-page-2');
    Route::get('/my/page/3', 'HomeController@mypage_3')->name('my-page-3');

});

```

In this case, FoxTail watches `/my/page/1`, `/my/page/2` and `/my/page/3`.
Then, it will keep `Tail` in session.

(Config)
In `config/fox_tail.php`, you can set `Story` which means user's access history.
See the file for the details.

Usage
=====

[](#usage)

Check if `Story` you set in the config file matches.

```
$story_name = 'how_much';

if(\FoxTail::isStory($story_name)) {

    echo 'Match!';

}

```

Get all `Tails`

```
$tails = \FoxTail::getTails();   // Laravel Collection

```

Get a `Tail`

```
$tail = \FoxTail::getTail($tail_name);
echo $tail->method;
echo $tail->url;
echo $tail->full_url;
print_r($tail->parameters); // Array

// or

echo \FoxTail::getMethod($tail_name);
echo \FoxTail::getUrl($tail_name);
echo \FoxTail::getFullUrl($tail_name);
print_r(\FoxTail::getParameters($tail_name));   // Array

```

Check if FoxTail has a `Tail` or not

```
$tail_name = 'about_us';

if(\FoxTail::has($tail_name)) {

    echo 'Has it!';

    $tail = \FoxTail::getTail($tail_name);

}

```

Check if the previous `Tail` name

```
$tail_name = 'about_us';

if(\FoxTail::isPrevious($tail_name)) {

    echo 'That is right!';

}

```

Get `Tail` and `Tail` name by step

```
echo \FoxTail::getTailNameByStep();    // Current tail
echo \FoxTail::getTailNameByStep(1);    // The previous tail tail

print_r(\FoxTail::getTailByStep());    // Current tail by step
print_r(\FoxTail::getTailByStep(1));    // The previous tail by step

```

License
=======

[](#license)

This package is licensed under the MIT License.

Copyright 2017 Sukohi Kuhoh

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity66

Established project with proven stability

 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

Every ~0 days

Total

4

Last Release

3301d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2980d59b309d45df3f2e6e51b1d336614da063240b8f76f873f287cd745ec5db?d=identicon)[Sukohi](/maintainers/Sukohi)

---

Top Contributors

[![SUKOHI](https://avatars.githubusercontent.com/u/5362394?v=4)](https://github.com/SUKOHI "SUKOHI (7 commits)")

### Embed Badge

![Health badge](/badges/sukohi-fox-tail/health.svg)

```
[![Health](https://phpackages.com/badges/sukohi-fox-tail/health.svg)](https://phpackages.com/packages/sukohi-fox-tail)
```

###  Alternatives

[markwalet/nova-modal-response

A Laravel Nova asset for Modal responses on an action.

17818.7k](/packages/markwalet-nova-modal-response)[crumbls/layup

A visual page builder plugin for Filament 5 — Divi-style grid layouts with extensible widgets.

591.7k1](/packages/crumbls-layup)[tomshaw/electricgrid

A feature-rich Livewire package designed for projects that require dynamic, interactive data tables.

119.2k](/packages/tomshaw-electricgrid)

PHPackages © 2026

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