教程:Vökuró
最后更新于:2022-04-02 05:13:17
[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
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
view->form = $form;
}
}
```
此操作只是将`SignUpForm`的表单实例传递给视图,该视图本身被呈现以允许用户输入登录详细信息:
```twig
{{ form('class': 'form-search') }}
{{ endForm() }} ```
';
Sign Up
{{ form.label('name') }}
{{ form.render('name') }} {{ form.messages('name') }}
{{ form.label('email') }}
{{ form.render('email') }} {{ form.messages('email') }}
{{ form.label('password') }}
{{ form.render('password') }} {{ form.messages('password') }}
{{ form.label('confirmPassword') }}
{{ form.render('confirmPassword') }} {{ form.messages('confirmPassword') }}
{{ form.render('terms') }} {{ form.label('terms') }} {{ form.messages('terms') }}
{{ form.render('Sign Up') }}
{{ form.render('csrf', ['value': security.getToken()]) }} {{ form.messages('csrf') }}{{ endForm() }} ```