Table of Contents
Learning - Fat-Free PHP Framework (Data Sets)
Data Sets
Do some RESTfull, serializable...
Display messages
- Create Nav Sidebar Menu
/messages
<li><a href="/messages">Messages on UI f3 template</a></li>
-
Update
routes.ini
Add following
GET /messages=MainController->displayMessages
-
Update
MainController.php
Add
displayMessages
inMainController
class
class MainController extends Controller
{
...
function displayMessages() {
$messages = new Messages($this->db);
$this->f3->set('messages', $messages-all());
$this->f3->set('view', 'messages.htm');
$template = new Template;
echo $template->render('layout.htm');
}
}
- Create view
messages.htm
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h1 class="page-header">Messages UI from template</h1>
<repeat group="{{ @messages }}" value="{{ @message }}">
<p>{{ @message.id }} {{ @message.key }} {{ @message.message }}</p>
</repeat>
</div>
Dipplay messages as JSON using AJAX call
- Create Nav Sidebar Menu
/api/messages
<li><a href="/api/messages">Messages JSON REST API</a></li>
-
Update
routes.ini
Add following
GET /api/messages=MainController->apiMessages
-
Update
MainController.php
Add
displayMessages
inMainController
class
class MainController extends Controller
{
...
function apiMessages() {
$messages = new Messages($this->db);
$data = $messages->all();
$json = array();
foreach ($data as $row)
$items = array();
foreach ($row as $key => $value) {
$items[$key] = $value;
}
array_push($json, $items);
}
echo json_encode($json);
}
}
Note: The echo json_encode($data);
doesn't work, because $messages->all() from model has returned some non public attributes
*Note: As the output is the JSON data, no view need to be defined.
Display messsages using REST API
Create new display messages page utilizes the REST API.
- Add menu in
app/views/nav.htm
<li><a href="/messageajaxview">Message UI with AJAX</a></li>
- Create route in
routes.ini
GET /messageajaxview=MainController->displayMessagesAjaxView
- Create function in
app/controllers/MainController.php
function displayMessagesAjaxView() {
$this->f3->set('view', 'messagesajax.htm');
$template=new Template;
echo $template->render('layout.htm');
}
- Create template
app/views/messageajx.htm
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h1 class="page-header">Message UI with AJAX</h1>
<button type="button" class="btn btn-default btn-lg">Fetch messages</button>
<div id="msg-container"></div>
</div>
-
Create javascript file
app/js/f3sample.js
-
Include jquery and javascript in
app/views/header.htm
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script src="app/js/f3sample.js"></script>
Then the f3sample.js
should be shown the resources in browser development tools.
References
Displaying data sets and creating a Rest API with the Fat-Free PHP Framework