要完成 INVO 的详细说明, 我们将会解释如何自定义 INVO 添加 UI 元素和根据控制器的执行从而改变标题.
#### 用户组件(User Components)
所有的UI元素和应用的视觉效果大部分都是通过 Bootstrap 实现的. 有些元素, 比如根据应用程序的状态而发生的导航条的变化. 例如, 右上角, 如果用户已经登录到应用程序, 链接”Log in / Sign Up” 变为 “Log out”.
应用程序的这部分是用的组件 “Elements” (app/library/Elements.php) 来实现的.
~~~
<?php
use Phalcon\Mvc\User\Component;
class Elements extends Component
{
public function getMenu()
{
// ...
}
public function getTabs()
{
// ...
}
}
~~~
这个类继承 Phalcon\Mvc\User\Component. 这不是强加的去继承这个类的组件, 但是它会帮助我们更加快速的访问你应用的服务. 现在, 我们将在服务容器中注册我们的第一个用户组件:
~~~
<?php
// 注册用户组件
$di->set(
"elements",
function () {
return new Elements();
}
);
~~~
作为控制器, 在视图中的插件或者组件, 这个组件还可以已在容器中注册的服务和通过访问一个相同名字的属性作为一个预先注册的服务:
~~~
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">INVO</a>
{{ elements.getMenu() }}
</div>
</div>
</div>
<div class="container">
{{ content() }}
<hr>
<footer>
<p>© Company 2015</p>
</footer>
</div>
~~~
重要的部分是:
~~~
{{ elements.getMenu() }}
~~~
#### 动态改变标题(Changing the Title Dynamically)
当你在不同的选项中浏览的时候就会看到标题在动态的改变. 在每个控制器初始化的时候实现:
~~~
<?php
class ProductsController extends ControllerBase
{
public function initialize()
{
// 设置文档标题
$this->tag->setTitle(
"Manage your product types"
);
parent::initialize();
}
// ...
}
~~~
注意, 这个方法 `parent::initialize()` 也被调用, 它添加更多的数据到标题:
~~~
<?php
use Phalcon\Mvc\Controller;
class ControllerBase extends Controller
{
protected function initialize()
{
// 在标题的前面加上应用名称
$this->tag->prependTitle(
"INVO | "
);
}
// ...
}
~~~
最后, 标题在 main 视图 (app/views/index.volt) 输出了 :
~~~
<!DOCTYPE html>
<html>
<head>
<?php echo $this->tag->getTitle(); ?>
</head>
<!-- ... -->
</html>
~~~
- Welcome
- 安装
- XAMPP 下的安装
- WAMP 下安装
- Apache 安装说明
- Nginx 安装说明
- Cherokee 安装说明
- 使用 PHP 内置 web 服务器
- Phalcon 开发工具
- Windows 系统下使用 Phalcon 开发工具
- Mac OS X 系统下使用 Phalcon 开发工具
- Linux 系统下使用 Phalcon 开发工具
- 教程 1:让我们通过例子来学习
- 教程 2:INVO简介
- 教程 3: 保护INVO
- 教程4: 使用CRUD
- 教程5: 定制INVO
- 教程6: Vökuró
- 教程 7:创建简单的 REST API
- 依赖注入与服务定位器(Dependency Injection/Service Location)
- MVC 架构(The MVC Architecture)
- 使用控制器(Using Controllers)
- 使用模型(Working with Models)
- 模型关系(Model Relationships)
- 模型事件(Model Events)
- 模型行为(Model Behaviors)
- 模型元数据(Models Metadata)
- 事务管理(Model Transactions)
- 模型验证(Validating Models)
- Working with Models (Advanced)
- Phalcon 查询语言(Phalcon Query Language (PHQL))
- 缓存对象关系映射(Caching in the ORM)
- 对象文档映射 ODM (Object-Document Mapper)
- 使用视图(Using Views)
- 视图助手 (Tags)(View Helpers (Tags))