dev-master
9999999-devmvrhov view bundle
MIT
The Requires
view bundle
Wallogit.com
2017 © Pedro Peláez
mvrhov view bundle
This bundle adds two View classes that you can return from your controller's action RouteView, TemplateView and
an interface ResponderInterface which the class you are returning from the controller should implement., (*1)
Require View bundle as a dependency using Composer:, (*2)
php composer.phar require mvrhov/view-bundle
Add bundle to app/AppKernel.php, (*3)
public function registerBundles()
{
return array(
new \mvrhov\ViewBundle\mvrhovViewBundle();
// ...
);
}
You are done., (*4)
use mvrhov\ViewBundle\View\RouteView;
use mvrhov\ViewBundle\View\ViewInterface;
final class RouteAction
{
public function __invoke(): ViewInterface
{
$params = [
'param1' => 'view',
'param2' => 'bundle',
];
return new RouteView('my_route', $params);
}
}
use mvrhov\ViewBundle\View\TemplateView;
use mvrhov\ViewBundle\View\ViewInterface;
final class TemplateAction
{
public function __invoke(): ViewInterface
{
$data = [
'foo' => 1,
'bar' => 'yep'
];
return new TemplateView('@Bundle/template.html.twig', $data);
}
}
use mvrhov\ViewBundle\View\ResponderInterface;
use mvrhov\ViewBundle\View\TemplateView;
use mvrhov\ViewBundle\View\RouteView;
use mvrhov\ViewBundle\View\ResponseView;
final class InvoiceResponder implements ResponderInterface;
{
private $invoices;
public function __construct(array $invoices)
{
$this->invoices = $invoices;
}
public function getView(Request $request, int $requestType): ViewInterface
{
if ('application/json' !== $request->getContentType()) {
$total = count($this->invoices);
if (0 === $total) {
return new RouteView('list_invoices');
}
if (1 === $total) {
return new TemplateView('@Bundle/template_one.html.twig', $this->invoices);
}
if (5 > $total) {
return new TemplateView('@Bundle/template_a_lot.html.twig', $this->invoices);
}
} else {
return new ResponseView(new Response(json_serialize($this->invoices)));
}
}
}
use mvrhov\ViewBundle\View\TemplateView;
use mvrhov\ViewBundle\View\ResponderInterface;
final class ResponderAction
{
public function __invoke(): ResponderInterface
{
$invoices = $this->getInvoices();
return new InvoiceResponder($invoices);
}
}
mvrhov view bundle
MIT
view bundle