A simple Laravel-style way to create breadcrumbs in Laravel 5.
(If you are still using Laravel 4.0 to 4.2 please use the 2.x version of Laravel Breadcrumbs instead.)
Short Version
- You're welcome to keep using Laravel Breadcrumbs, but
- No support requests will be answered
- No bugs will be fixed
- No pull requests will be merged
- Feel free to fork it and maintain it yourself
Why?
I originally built Laravel Breadcrumbs in May 2013 when I was just learning Laravel (Laravel 4 was still in beta at the time). I decided to release it as a package mostly just to learn how packages worked in more detail.
Over time it became reasonably popular (381k installs, 757 stars, Page 1 of Packalyst Most Popular), and people started opening issues requesting support and additional features. I've always tried to be helpful and provide support, and for the last 18 months I have been planning to dedicate some time to merging all the open pull requests, implementing the feature requests and updating/rewriting the documentation... But finally I realised I no longer have the motivation needed for it.
So rather than quietly abandoning it and leaving users wondering what happened, I've decided to officially announce that the package is no longer maintained.
(To be clear, you are welcome to keep using it - just don't expect me to fix it if it breaks. That includes when new Laravel versions are relased.)
Forking It
Laravel Breadcrumbs is released under the MIT License, which means you are free to create your own fork (whether for your own use or for anyone to use) as long as you retain the copyright notices.
The documentation includes some instructions that may help if you haven't done that before.
I'm not planning to hand over control of this repo to anyone else (as it is in my name), but if anyone decides to create a fork that they are willing to support and maintain, please email me and I'll add a link to this page. You can also use issue #137 to discuss it among yourselves.
If you do commit to supporting your fork, you should be aware that writing code to solve your own problems is the easy bit - the tricky bits include:
- Dealing with vague support requests and people that expect you to solve their bugs with no thanks
- Being asked to write new features that you don't personally need because other people want them but aren't willing to spend time writing them
- Writing clear and concise documentation for every feature, so users don't get confused and take up even more time asking for support
- Having to write most of the documentation and unit tests yourself because few PRs include them
- Doing all of that even though you don't get paid anything for it
Known Bugs
I'm only aware of 1 outstanding bug:
As a workaround, either name your routes or wrap it in a try/catch block.
Open Pull Requests
Thanks to the people who opened these PRs. I'm sorry I won't be able to merge them. Maybe if someone creates a fork they would be good enough to review them:
- Allow breadcrumb name to be set in routes
- Add Breadcrumbs::get() method
- Microdata in templates - Option 1, Option 2
- Bootstrap 4 template
- Support for class-based breadcrumbs (alternative to closures)
- Make breadcrumbs location configurable
- Materialize and Foundation 6 templates
Open Requests
- Automatically add a breadcrumb for pagination
- Support dependency injection
- Improve documentation around multiple parameters
- Add Breadcrumbs::group() method - though I don't personally see the value
- Cache breadcrumbs - though I'm not convinced there would be much speed improvement
- Throw an exception if accidentally called recursively - though Xdebug already handles this if installed
Other Suggestions for Forks
- The documentation needs updating to recommend using
->name('name')
instead of['as' => 'name']
in routes (since Laravel 5.3) - I was considering rewriting the documentation to make Route-bound breadcrumbs the standard instead of an after-thought, with a better explanation of how explicit and implicit binding work, since these seem to be things people get stuck on
- You will need to set up accounts on Packagist for package delivery and Read the Docs for documentation
- You might also want to set up Travis CI and Coveralls - there are already config files for them in the repo
Copyright © 2013-2015 Dave James Miller. Released under the MIT License.