Controllers
Controllers
Controllers are the bread and butter of the framework they control when a model is used and equally when to include a view for output. A controller is a class with methods, these methods are the outputted pages when used in conjunction with routes.
A method can be used for telling a view to show a page or outputting a data stream such as XML or a JSON array. Put simply they are the logic behind your application.
Controllers can be placed in subfolders relative to the root of the Controllers folder, each class located in subfolders must have its own namespace to for instance a subfolder called Admin and a class called Users should have a namespace of App\Controllers\Admin
Controllers are created inside the app/Controllers folder. To create a controller, create a new file, the convention is to StudlyCaps without any special characters or spaces. Each word of the filename should start with a capital letter. For instance: AddOns.php.
Controllers will always use a namespace of App\Controllers, if the file is directly located inside the controllers folder. If the file is in another folder that folder name should be part of the name space.
For instance, a controller called blog located in app/Controllers/Blog would have a namespace ofApp\Controllers\Blog
Controllers need to use the main Controller; they extend it, the syntax is:
namespace App\Controllers;
use Core\Controller
class Welcome extends Controller
{
}
Also, the view class is needed to include view files, you can either call the namespace then the view:
Create an alias:
use Core\View;
Then to use:
return View::make('path);
Example
namespace App\Controllers;
use Core\View;
use Core\Controller;
class Welcome extends Controller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
return View::make('Welcome/Welcome')->shares('title', 'Welcome);
}
}
Controllers will need to access methods and properties located in the parent controller (app/Core/Controller.php) in order to do this they need to call the parent constructor inside a construct method.
public function __construct()
{
parent::__construct();
}
The construct method is called automatically when the controller is instantiated once called the controller can then call any property or method in the parent controller that is set as public or protected.
The following property becomes available to the controller
- $language / used to call the language object, useful when using language files
Both models and helpers can be used in a constructor and added to a property then becoming available to all methods. The model or helper will need to use its namespace while being called
namespace App\Controllers;
use Core\View;
use Core\Controller;
class Blog extends Controller
{
private $blog;
public function __construct()
{
parent::__construct();
$this->blog = new \App\Models\Blog();
}
public function blog()
{
$posts = $this->blog->getPosts();
View::make('Blog/Posts')->shares('title', 'Blog')->withPosts($posts);
}
}
An alternative way to load a view is to call $this->getView() this acts in the same way as View::make() only without the passed params, the path is worked out internally.
To use getView the view path should follow the controller and method name ie:
class Users extends Controller
{
public function index()
{
return $this->getViews()->shares('title', 'The Title');
}
}
Will match to app/Views/Users/Index.php
Methods
To use a model in a controller, create a new instance of the model. The model can be placed directly in the models folder or in a sub folder, For example:
public function index()
{
$data = new \App\Models\Classname();
}
Helpers
A helper can be placed directly in the helpers folder or in a sub folder.
public function index()
{
//call the session helper
Session::set('username', 'Dave');
}
Load a view, by calling its render method, pass in the path to the file inside the views folder.
use Core\View;
public function index()
{
//static way
View::make('Welcome/Welcome');
}
A controller can have many methods, a method can call another method, all standard OOP behaviour is honoured. Data can be passed from a controller to a view by passing an array to the view. The array can be made up from keys. Each key can hold a single value or another array. The array must be passed to the method for it to be used inside the view page or in a template (covered in the templates section)
$content = 'The contact for the page';
$users = array('Dave', 'Kerry', 'John');
View::make('Contacts/Contacts')->withContent($content)->withUsers($users);
Using a model is very similar, an array holds the results from the model, the model calls a method inside the model.
$contacts = new \App\Models\Contacts();
$data['contacts'] = $contacts->getContacts();
Controllers的更多相关文章
- ASP.NET Core 中文文档 第四章 MVC(4.1)Controllers, Actions 和 Action Results
原文:Controllers, Actions, and Action Results 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:许登洋(Seay) Action 和 acti ...
- 【转】Controllers and Routers in ASP.NET MVC 3
Controllers and Routers in ASP.NET MVC 3 ambilykk, 3 May 2011 CPOL 4.79 (23 votes) Rate: vote 1vote ...
- 控制器层(Controllers)
本章译者:@freewind 业务逻辑代码通常位于模型(model)层.客户端(比如浏览器)无法直接调用其中的代码,所以模型对象提供的功能,必须作为资源以URI方式暴露给外部. 客户端使用HTTP协议 ...
- Presenting view controllers on detached view controllers is discouraged <CallViewController: 0x14676e240>.
今天在优化app时,发现程序出现这种警告:“ Presenting view controllers on detached view controllers is discouraged <C ...
- [译]在AngularJS中何时应该使用Directives,Controllers或者Service
原文: http://kirkbushell.me/when-to-use-directives-controllers-or-services-in-angular/ Services Servic ...
- How to Create Mixed Reality Videos for the Vive - with Two Controllers
http://secondreality.co.uk/blog/how-to-create-mixed-reality-videos-for-the-vive-with-two-controllers ...
- 玩转单元测试之Testing Spring MVC Controllers
玩转单元测试之 Testing Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/4311657.html The Spri ...
- 就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers
就是这么简单(续)!使用 RestAssuredMockMvc 测试 Spring MVC Controllers 转载注明出处:http://www.cnblogs.com/wade-xu/p/43 ...
- 更轻量的 View Controllers
iew controllers 通常是 iOS 项目中最大的文件,并且它们包含了许多不必要的代码.所以 View controllers 中的代码几乎总是复用率最低的.我们将会看到给 view con ...
- 【IOS笔记】Resource Management in View Controllers
Resource Management in View Controllers 视图控制器的资源管理 View controllers are an essential part of managin ...
随机推荐
- 【转】android开发工具Eclipse,androidStudio,adt网盘下载--不错
原文网址:http://tools.android-studio.org/index.php/85-tools/109-android-tools-download
- Iterator和ListIterator区别
我们在使用List,Set的时候,为了实现对其数据的遍历,我们经常使用到了Iterator(迭代器).使用迭代器,你不需要干涉其遍历的过程,只需要每次取出一个你想要的数据进行处理就可以了. 但是在使用 ...
- git ssh key for github
第一:检查.ssh是否存在(ls -al ~/.ssh) $ ls -al ~/.ssh Lists the files in your .ssh directory, if they exist 第 ...
- OpenCV中的矩阵乘法运算
转载:http://blog.csdn.net/tangwei2014 OpenCV中矩阵乘法运算 1. Mat*Mat: 第一个矩阵的列数必须等于第二个矩阵的行数. [0, 1, 2, 3; ...
- 44 个 JavaScript 变态题解析
当初笔者做这套题的时候不仅怀疑智商, 连人生都开始怀疑了…. 不过, 对于基础知识的理解是深入编程的前提. 让我们一起来看看这些变态题到底变态不变态吧! 第1题 ["1", &qu ...
- Web缓存基础:术语、HTTP报头和缓存策略
简介 对于您的站点的访问者来说,智能化的内容缓存是提高用户体验最有效的方式之一.缓存,或者对之前的请求的临时存储,是HTTP协议实现中最核心的内容分发策略之一.分发路径中的组件均可以缓存内容来加速后续 ...
- 【现代程序设计】【homework-02】【11061027】
Q:描述在这么多相似的需求面前, 你怎么维护你的设计 (父类/子类/基类, UML, 设计模式, 或者其它方法) 让整个程序的架构不至于崩溃的? A:由于使用的是面向过程的C语言,所以维护设计这个问 ...
- elecworks 电缆型号管理器
部件的命名:系列 导线数x尺寸 (不含保护类型的电线) 或:系列 导线数G尺寸 G(指保护线颜色gr ...
- 1N系列稳压二极管参数
1N系列稳压二极管参数 型号 稳定电压 型号 稳定电压 型号 稳定电压 1N5236 7.5 1N5738 12 1N6002 12 1N5237 8.2 1N5739 13 1N6003 13 1N ...
- mysql登陆报错(ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2))
部署mysql版本信息 version: 5.6.21 具体现象: mysql服务能够正常启动如下: [root@localhost ~]# service mysqld restart Shutti ...