Search by

ooblatron / tsuka

etimbo

Creation of Bootstrap web pages with pure PHP and no templates

Package info

bitbucket.org/ooblatron/tsuka/

Homepage

pkg:composer/ooblatron/tsuka

Statistics

Installs: 183

Dependents: 1

Suggesters: 0

v2.1.2 2026-10-18 21:24 UTC

This package is auto-updated.

Last update: 2026-10-18 21:24:46 UTC


README

Tsuka allows you to create beautiful web pages using the Bootstrap framework without writing any HTML or CSS.

Why Tsuka?

Tsuka is an alternative to templating engines like Twig and Blade. These are great for creating web pages, but require knowledge of HTML and CSS. It is also quite fiddly coding in all the relevant tags. Tsuka allows you to build webpages by calling easy-to-use methods which map to underlying Bootstrap functionality, e.g.

  • addParagraph()
  • addList()
  • addNavBar()
  • addLead()
  • addDropdown()

and many more.

You can use PHP loops, or anything else, as Tsuka is pure PHP. There is no need to learn a special templating loop syntax or how to embed PHP into a template. With Tsuka, your view classes are pure PHP.

You can also easily upgrade to a new version of Bootstrap, as the underlying methods will stay the same. Even things like Jumbotrons, which have been removed from Bootstrap 5, will continue to be supported by Tsuka using the addJumbotron() method.

Installation

Install the latest version with

$ composer require ooblatron/tsuka

The GD extension is required for locally generated PNG QR codes. addQrCode() embeds the image as a data URI and does not call an external QR service.

Basic Usage

<?php

use Tsuka\Bootstrap4;

class HelloWorldViewport extends Bootstrap4
{
    public function build() {
        $this->startPage('Page title');
        $this->addH1('Hello world');
        $this->endPage();
        return $this;
    }
}

Echo the output.

Basic example

<?php

$viewport = new HelloWorldViewport();
$viewport->build()->display();

Laravel

<?php

class SomeController
{
.
.
.
    public function someMethod(
        HelloWorldViewport $viewport    
    ) {
        return $viewport->build()->getContent();
    }
}

Slipstream

<?php

class SomeController
{
    public function __construct(
        HelloWorldViewport $viewport    
    ) {
        $viewport->build()->display();
    }
}

Documentation

About

Requirements

Compatibility testing

The full test suite passes on PHP 8.3.35 and 8.4.26 with either Carbon 2.73.0 or 3.14.2. The php83 and php84 Docker services are pinned to these PHP patch versions.

To reproduce the four combinations:

docker compose build php83 php84
docker compose run --rm php83 composer update 'nesbot/carbon:^2.63' --with-all-dependencies --no-interaction
docker compose run --rm php83 composer validate --strict
docker compose run --rm php83 composer test
docker compose run --rm php84 composer test
docker compose run --rm php83 composer update 'nesbot/carbon:^3.0' --with-all-dependencies --no-interaction
docker compose run --rm php83 composer validate --strict
docker compose run --rm php83 composer test
docker compose run --rm php84 composer test

Run these commands sequentially: the services share the local vendor directory and ignored composer.lock. The updates select the latest compatible release in each Carbon major.

Bootstrap versions

  • Version 1 of Tsuka supports Bootstrap 4.

Author

Tim Rogers - tim@ooblatron.org - https://twitter.com/timdrogers

License

Tsuka is licensed under the MIT License - see the LICENSE file for details

Acknowledgements

This package uses the brilliant Bootstrap framework, which allows back-end coders to create clean and professional web pages without needing a deep knowledge of graphic design or CSS.