Think Ruby turbolinks but for your PHP application. Powered by pjax.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src/Turbo
tests/TurboTests
.gitignore
.travis.yml
composer.json
phpunit.xml.dist
readme.md

readme.md

Turbo

Turbolinks but for your PHP application; powered by PJAX.

Build Status

Installation

Turbo has only been tested installing through Composer.

Add rcrowe\turbo as a requirement to composer.json:

{
    "require": {
        "rcrowe/turbo": "0.2.*"
    }
}

Update your packages with composer update or install with composer install.

Providers

Providers enable instant usage of Turbo within different frameworks, we currently provide the following integrations:

Laravel

Add Turbo\Provider\Laravel\TurboServiceProvider to app/config/app.php and your good to go.

The Laravel provider also registers a turbo.pjax event so that other parts of your app can listen for a pjax request. For example:

Event::listen('turbo.pjax', function($request, $response) {
    $response->header('X-App-Msg', 'Hello world');
});

Fuelphp

Add class_alias('Turbo\\Provider\\Fuel\\Response', 'Response') to the bottom of fuel\app\bootstrap.php and your good to go.

Turbo also registers a turbo.pjax event that you can listen for. For example:

Event::register('turbo.pjax', function() {
    echo 'This is a pjax request';
});

PJAX

To make this all work Turbo needs PJAX to get and set the response. Just like Turbolinks we respond with the whole body, not just a section of it. In order to support this, you need to setup PJAX to use the <body> tag. A simple example of this would be:

$(function() {
    $(document).pjax('.js-pjax', 'body');
});

License

Turbo is released under the MIT public license.