[TOC]
# 教程:Vökuró
Vökuró是另一个示例应用程序,您可以使用它来了解有关Phalcon的更多信息。Vökuró是一个小型网站,展示了如何实现安全功能以及用户和权限管理。您可以从[Github](https://github.com/phalcon/vokuro)克隆其代码。
## 项目结构
在文档根目录中克隆项目后,您将看到以下结构:
```bash
vokur
app/
config/
controllers/
forms/
library/
models/
views/
cache/
public/
css/
img/
schemas/
```
该项目遵循与INVO非常相似的结构。在浏览器`http://localhost/vokuro`中打开应用程序后,您将看到如下内容:
![](https://docs.phalconphp.com/images/content/tutorial-vokuro-1.png)
该应用程序分为两个部分,一个是前端,访问者可以在其中注册服务,另一个是管理用户可以管理注册用户的后端。前端和后端都组合在一个模块中。
## 加载类和依赖
该项目使用`Phalcon\Loader`在项目和作曲家中加载控制器,模型,表单等,以加载项目的依赖。因此,在执行Vökuró之前,您必须做的第一件事是通过[composer](https://getcomposer.org/)安装其依赖。假设您已正确安装,请在控制台中键入以下命令:
```bash
cd vokuro
composer install
```
Vökuró使用Swift发送电子邮件以确认注册用户的注册,`composer.json`看起来像:
```json
{
"require" : {
"php": ">=5.5.0",
"ext-phalcon": ">=3.0.0",
"swiftmailer/swiftmailer": "^5.4",
"amazonwebservices/aws-sdk-for-php": "~1.0"
}
}
```
现在,有一个名为`app/config/loader.php`的文件,其中设置了所有自动加载的东西。在此文件的末尾,您可以看到包含composer自动加载器,使应用程序能够自动加载下载的依赖项中的任何类:
```php
<?php
// ...
// Use composer autoloader to load vendor classes
require_once BASE_PATH . '/vendor/autoload.php';
```
此外,与INVO不同,Vökuró利用控制器和模型的命名空间,这是构建项目的推荐做法。这样自动加载器看起来与我们之前看到的略有不同(`app/config/loader.php`):
```php
<?php
use Phalcon\Loader;
$loader = new Loader();
$loader->registerNamespaces(
[
'Vokuro\Models' => $config->application->modelsDir,
'Vokuro\Controllers' => $config->application->controllersDir,
'Vokuro\Forms' => $config->application->formsDir,
'Vokuro' => $config->application->libraryDir,
]
);
$loader->register();
// ...
```
我们使用`registerDirectories()`而不是使用`registerNamespaces()`。每个命名空间都指向配置文件(`app/config/config.php`)中定义的目录。例如,命名空间`Vokuro\Controllers`指向`app/controllers`,因此该命名空间中的应用程序所需的所有类都需要它的定义:
```php
<?php
namespace Vokuro\Controllers;
class AboutController extends ControllerBase
{
// ...
}
```
## 注册
首先,让我们来看看用户在Vökuró的注册方式。当用户单击`Create an Account`按钮时,将调用控制器SessionController并执行操作`signup` :
```php
<?php
namespace Vokuro\Controllers;
use Vokuro\Forms\SignUpForm;
class SessionController extends ControllerBase
{
public function signupAction()
{
$form = new SignUpForm();
// ...
$this->view->form = $form;
}
}
```
此操作只是将`SignUpForm`的表单实例传递给视图,该视图本身被呈现以允许用户输入登录详细信息:
```twig
{{ form('class': 'form-search') }}
<h2>
Sign Up
</h2>
<p>{{ form.label('name') }}</p>
<p>
{{ form.render('name') }}
{{ form.messages('name') }}
</p>
<p>{{ form.label('email') }}</p>
<p>
{{ form.render('email') }}
{{ form.messages('email') }}
</p>
<p>{{ form.label('password') }}</p>
<p>
{{ form.render('password') }}
{{ form.messages('password') }}
</p>
<p>{{ form.label('confirmPassword') }}</p>
<p>
{{ form.render('confirmPassword') }}
{{ form.messages('confirmPassword') }}
</p>
<p>
{{ form.render('terms') }} {{ form.label('terms') }}
{{ form.messages('terms') }}
</p>
<p>{{ form.render('Sign Up') }}</p>
{{ form.render('csrf', ['value': security.getToken()]) }}
{{ form.messages('csrf') }}
<hr>
{{ endForm() }}
```
- 常规
- Welcome
- 贡献
- 生成回溯
- 测试重现
- 单元测试
- 入门
- 安装
- Web服务器设置
- WAMP
- XAMPP
- 教程
- 基础教程
- 教程:创建一个简单的REST API
- 教程:Vökuró
- 提升性能
- 教程:INVO
- 开发环境
- Phalcon Compose (Docker)
- Nanobox
- Phalcon Box (Vagrant)
- 开发工具
- Phalcon开发者工具的安装
- Phalcon开发者工具的使用
- 调试应用程序
- 核心
- MVC应用
- 微应用
- 创建命令行(CLI)应用程序
- 依赖注入与服务定位
- MVC架构
- 服务
- 使用缓存提高性能
- 读取配置
- 上下文转义
- 类加载器
- 使用命名空间
- 日志
- 队列
- 数据库
- 数据库抽象层
- Phalcon查询语言(PHQL)
- ODM(对象文档映射器)
- 使用模型
- 模型行为
- ORM缓存
- 模型事件
- 模型元数据
- 模型关系
- 模型事务
- 验证模型
- 数据库迁移
- 分页
- 前端
- Assets管理
- 闪存消息
- 表单
- 图像
- 视图助手(标签)
- 使用视图
- Volt:模板引擎
- 业务逻辑
- 访问控制列表(ACL)
- 注解解析器
- 控制器
- 调度控制器
- 事件管理器
- 过滤与清理
- 路由
- 在session中存储数据
- 生成URL和路径
- 验证
- HTTP
- Cookies管理
- 请求环境
- 返回响应
- 安全
- 加密/解密
- 安全
- 国际化
- 国际化
- 多语言支持