ooblatron / tsuka
Creation of Bootstrap web pages with pure PHP and no templates
Requires
- php: >=8.2
- ext-fileinfo: *
- ext-gd: *
- ext-iconv: *
- ext-mbstring: *
- endroid/qr-code: ~6.0.9
- nesbot/carbon: ^2.63 || ^3.0
- vlucas/valitron: ^1.4
Requires (Dev)
- phpunit/phpunit: ^11.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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
- PHP 8.2 or above
- Composer package nesbot/carbon version
^2.63or^3.0 - Composer package vlucas/valitron for form validation
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.