[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`中打開應用程序后,您將看到如下內容:

該應用程序分為兩個部分,一個是前端,訪問者可以在其中注冊服務,另一個是管理用戶可以管理注冊用戶的后端。前端和后端都組合在一個模塊中。
## 加載類和依賴
該項目使用`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管理
- 請求環境
- 返回響應
- 安全
- 加密/解密
- 安全
- 國際化
- 國際化
- 多語言支持