- Seme Framework
- Credits
- Version 3.2.X
- Issue
- Deployment
Introduction
Before starting the tutorial, you have to do which is described on the requirements first.
The goals for this tutorial is, how to interacted with View and Controller. Model interaction will be explored at next tutorial.
Ok, lets get started!.
Hello World!
Hello World is often used to illustrate the basic syntax of a programming language.
But on Seme Framework, Hello World used to checked the basic MVC purpose.
Configuration adjustment
We assumed that you put Seme Framework which is described In the Download & Install page.
After that, start the XAMPP and open http://localhost/seme_framework
.
Controller
On Seme Framework, the default controller named home.php
with its class name name Home
too.
First, open files located at app/controller/home.php
.
If the file doesnt exists, create one.
<?php
class Home extends SENE_Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
echo 'Hello World!';
}
}
And then open http://localhost/seme_framework
, it should show Hello World!.
View
On this tutorial we will learn how to render the view with theme and passing the data from controller to view passed by controller.
Create Theme: front.
Before start, we have to understand the theme directory structure.
-| app/
---| view/
-----| front/
-------| theme.json
-------| script.json
-------| page/
---------| col-1.php
-----------| html/
-------------| head.php
Check the app/view/front/
directory, create directory if does not exists.
Check the app/view/front/page/
directory, create directory if does not exists.
Check the app/view/front/page/html/
directory, create directory if does not exists.
File theme.json
File theme.json purpose is to define the css that are required for creating the Theme.
Open files located at app/view/front/theme.json
.
If the file does not exists, create one. And then, put this code on it.
[
"<link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/icon?family=Material+Icons\" \/>",
"<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css\" \/>"
]
File script.json
File script.json purpose is to define the javascript that are required for creating the Theme.
We will define the which scripts to load. Open files located at app/view/front/script.json
.
If the file does not exists, create one. And then, put this code on it.
[
"<script src=\"https://code.jquery.com/jquery-3.5.1.min.js\"><\/script>",
"<script src=\"https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js\"><\/script>"
]
Create HTML Main layout
Seme Framework support HTML main layout for rendering html, javascript, and content.
Open files located at app/view/front/page/col-1.php
.
If the file does not exists, create one. And then, put this code on it.
<!DOCTYPE html>
<html>
<?php $this->getThemeElement('page/html/head', $__forward) ?>
<body>
<?php $this->getThemeContent() ?>
<!-- jQuery, Bootstrap.js, jQuery plugins and Custom JS code -->
<?php $this->getJsFooter(); ?>
<!-- Load and execute javascript code used only in this page -->
<script>
$(document).ready(function(e){
<?php $this->getJsReady(); ?>
});
<?php $this->getJsContent(); ?>
</script>
</body>
</html>
Separated HTML head
Seme Framework support separated layout element for maximizing reusable components.
To do so open files located at app/view/front/page/html/head.php
.
If the file does not exists, create one. And then, put this code on it.
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title><?=$this->getTitle()?></title>
<meta name="description" content="<?=$this->getDescription()?>">
<meta name="keyword" content="<?=$this->getKeyword()?>"/>
<meta name="author" content="<?=$this->getAuthor()?>">
<meta name="robots" content="<?=$this->getRobots()?>" />
<!-- Icons -->
<!-- The following icons can be replaced with your own, they are used by desktop and mobile browsers -->
<link rel="shortcut icon" href="<?=$this->getIcon()?>">
<!-- END Icons -->
<meta name="msapplication-TileColor" content="#353769">
<meta name="theme-color" content="#353769">
<?php $this->getAdditionalBefore()?>
<?php $this->getAdditional()?>
<?php $this->getAdditionalAfter()?>
</head>
Create the Content
Seme Framework support separated theme content. This content will be rendered on inner main layout.
To do so, open files located at app/view/front/home/home.php
.
If the file does not exists, create one.
And then, put this code on it.
<div class="container">
<div class="row">
<div class="col m12 s12">
<div class="card rounded preload-any">
<div class="card-content ">
<span class="card-title"><?=$hello?> passed to view</span>
<p>This is from view only</p>
<br>
<div class="btn-group">
</div>
</div>
</div>
</div>
</div>
</div>
Implement on the Controller
After creating a theme with its content, now we have to integrating it from controller.
To do so, open app/controller/home.php
and then change the source code with this code:
<?php
class Home extends SENE_Controller
{
public function __construct()
{
parent::__construct();
$this->setTheme('front');
}
public function index()
{
$data = array();
$this->setTitle('Seme Framework Introduction!');
$this->setDescription("Congratulation, you have done well.");
$this->setKeyword('Seme Framework');
$this->setAuthor('Seme Framework');
$data['hello'] = "this is from controller";
$this->putThemeContent("home/home",$data); //pass data to view
$this->loadLayout("col-1",$data);
$this->render();
}
}
Test the Result
For testing the result, open http://localhost/seme_framework
from browser and then lets we see what we got.
Bonus Mission
With the main layout that we have created before, we can include and render javascript using Seme Framework.
For achieving this, first create the file app/view/front/home/home_bottom.php
.
And then, put this code on it.
alert('This is Hello World from app/view/home/home_bottom.php');
After that, we have to load the home bottom from app/controller/home.php
.
<?php
class Home extends SENE_Controller
{
public function __construct()
{
parent::__construct();
$this->setTheme('front');
}
public function index()
{
$data = array();
$this->setTitle('Seme Framework Introduction!');
$this->setDescription("Congratulation, you have done well.");
$this->setKeyword('Seme Framework');
$this->setAuthor('Seme Framework');
$data['hello'] = "this is from controller";
$this->putThemeContent("home/home",$data); //pass data to view
$this->putJsContent("home/home_bottom",$data); //pass data to view
$this->loadLayout("col-1",$data);
$this->render();
}
}
To test it, open http://localhost/seme_framework
using browser.
It should show an alert, view with loaded CSS, and show H1 with content Hello World from view and using theme.