Spec-Zone.ru › Phalcon 3

Урок 6: Vökuró

Vökuró — это ещё одно примерное приложение, которое вы можете использовать, чтобы узнать больше о Phalcon. Vökuró — это небольшой веб-сайт, демонстрирующий, как реализовать функции безопасности и управление пользователями и разрешениями. Вы можете клонировать его код с Github.

Структура проекта

После клонирования проекта в корень документа вы увидите следующую структуру:

vokuro/
    app/
        config/
        controllers/
        forms/
        library/
        models/
        views/
    cache/
    public/
        css/
        img/
    schemas/

Этот проект имеет довольно похожую структуру с INVO. После открытия приложения в вашем браузере http://localhost/vokuro вы увидите нечто подобное:

../_images/vokuro-1.png

Приложение разделено на две части: фронтенд, где посетители могут зарегистрироваться в сервисе, и бэкенд, где административные пользователи могут управлять зарегистрированными пользователями. Фронтенд и бэкенд объединены в одном модуле.

Загрузка классов и зависимостей

В этом проекте используется Phalcon\Loader для загрузки контроллеров, моделей, форм и т. д. внутри проекта и composer для загрузки зависимостей проекта. Итак, первое, что вам нужно сделать перед выполнением Vökuró, это установить его зависимости через composer. Предполагая, что он правильно установлен, введите следующую команду в консоли:

cd vokuro
composer install

Vökuró отправляет электронные письма для подтверждения регистрации зарегистрированных пользователей, используя Swift; файл composer.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, что позволяет приложению автоматически загружать любые классы из загруженных зависимостей:

// ...

// Use composer autoloader to load vendor classes
require_once BASE_PATH . "/vendor/autoload.php";

Кроме того, Vökuró, в отличие от INVO, использует пространства имён для контроллеров и моделей, что является рекомендуемой практикой для структурирования проекта. Таким образом, автозагрузчик выглядит немного иначе, чем тот, который мы видели ранее (app/config/loader.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, поэтому все классы, необходимые приложению в этом пространстве имён, требуются в его определении:

namespace Vokuro\Controllers;

class AboutController extends ControllerBase
{
    // ...
}

Регистрация

Сначала давайте посмотрим, как пользователи регистрируются в Vökuró. Когда пользователь нажимает кнопку «Создать учётную запись», вызывается контроллер SessionController, и выполняется действие «signup»:

namespace Vokuro\Controllers;

use Vokuro\Forms\SignUpForm;

class RegisterController extends ControllerBase
{
    public function signupAction()
    {
        $form = new SignUpForm();

        // ...

        $this->view->form = $form;
    }
}

Это действие просто передаёт экземпляр формы SignUpForm в представление, которое само рендерится, чтобы позволить пользователю ввести данные для входа:

{{ 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() }}

© 2011–2017 Phalcon Framework Team
Licensed under the Creative Commons Attribution License 3.0.
https://docs.phalconphp.com/en/latest/reference/tutorial-vokuro.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API