1. Go to this page and download the library: Download icanboogie/view library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
icanboogie / view example snippets
use ICanBoogie\Prototype;
use ICanBoogie\Routing\Controller;
use ICanBoogie\View\View;
use function ICanBoogie\Render\get_renderer;
Prototype::bind([
Controller::class => [
'lazy_get_view' => function(Controller $controller) {
$view = new View($controller, get_renderer());
new View\AlterEvent($view);
return $view;
}
]
]);
use ICanBoogie\Routing\Controller;
use ICanBoogie\Module\ControllerBindings as ModuleBindings;
use ICanBoogie\View\ControllerBindings as ViewBindings;
class ArticlesController extends Controller
{
use Controller\ActionTrait, ViewBindings, ModuleBindings;
protected function action_index()
{
$this->view->content = $this->model->visible->ordered->limit(10);
$this->view['title'] = "Last ten articles";
}
}
use ICanBoogie\PropertyNotDefined;
use ICanBoogie\View\View;
$app->events->attach(function(View\AlterEvent $event, View $view) use ($app) {
try
{
$module_id = $view->controller->route->module;
}
catch (PropertyNotDefined $e)
{
// if the property is not defined we just return
return;
}
// adding a template path
$view->template_resolver->add_path($app->modules[$module_id]->path . 'templates');
// adding a variable
$view['log'] = $app->log->messages;
// altering the layout
if ($app->is_mobile)
{
$view->layout .= '.mobile';
}
});
use ICanBoogie\Routing\Controller;
use ICanBoogie\View\ControllerBindings as ViewBindings;
class ArticlesController extends Controller
{
use Controller\ActionTrait;
use ViewBindings;
// …
protected function action_index()
{
$this->view->content = $this->model->visible->ordered->limit(10);
$this->view->template = null;
$this->view->layout = "admin";
}
// …
}
use ICanBoogie\Routing\Controller;
use ICanBoogie\View\ControllerBindings as ViewBindings;
use ICanBoogie\Module\ControllerBindings as ModuleBindings;
class ArticlesController extends Controller
{
use Controller\ActionTrait, ViewBindings, ModuleBindings;
protected function action_any_index()
{
$this->view->content = $this->model->visible->ordered->limit(10);
$this->view['title'] = "Last ten articles";
}
protected function action_any_json()
{
$this->action_any_index();
$this->response->content_type = "application/json";
// The view is cancelled to return JSON text
return json_encode($this->view->content);
}
protected function action_head_index()
{
$this->action_any_index();
// The view is cancelled although no result is returned
$this->view = null;
}
}