This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/includes/kohana/modules/userguide/guide/ru-ru/start.controllers.md
2011-05-03 09:49:01 +10:00

5.1 KiB
Raw Blame History

Контроллеры

Контроллеры являются промежуточным звеном между моделью и представлением. Они передают информацию в модель для изменения данных, и запрашивают информацию от модели. Например, операции работы с базой данных: вставка (insert), изменение (update) и удаление (delete) как операции редактирования данных, и выборка (select) для извлечения данных. Информацию, полученную от модели, контроллеры перенаправляют в представления, которые содержат конечный результат, предназначенный для отображения пользователям.

Контроллеры вызываются с помощью URL. За более подробной информацией обратитесь к разделу URL и ссылки.

Название контроллера и его содержание

Имя класса контроллера должно соответствовать имени файла.

Соглашения при использовании контроллеров

  • имя файла должно быть в нижнем регистре, например: articles.php
  • файл контроллера должен располагаться в (под-)директории classes/controller, например: classes/controller/articles.php
  • имя класса контроллера должно соответствовать имени файла, начинаться с заглавной буквы и должно начинаться с префикса Controller_, например: Controller_Articles
  • класс контроллера должен быть потомком класса Controller.
  • методы контроллера, предназначенные для вызова через URI, должны начинаться с префикса action_ (например: action_do_something() )

Пример простейшего контроллера

Создадим простой контроллер, который будет выводить на экран 'Hello World!'.

application/classes/controller/article.php

<?php defined('SYSPATH') OR die('No direct access allowed.');

class Controller_Article extends Controller
{
    public function action_index()
    {
        echo 'Hello World!';
    }
}

Теперь, если открыть адрес yoursite.com/article (или yoursite.com/index.php/article, если не используется URL rewritting), то можно увидеть

Hello World

Вот он, Ваш первый контроллер. Он соответствует всем указанными правилам.

Пример более сложного контроллера

В предыдущем примере метод index() вызывается посредством url yoursite.com/article. Если второй сегмент url не указан, используется метод index. Он также может быть вызван явно следующим url: yoursite.com/article/index

Второй сегмент url определяет метод, который используется в вызываемом контроллере.

application/classes/controller/article.php

class Controller_Article extends Controller
{
    public function action_index()
    {
        echo 'Hello World!';
    }

    public function action_overview()
    {
        echo 'Article list goes here!';
    }
}

Теперь, если в адресной строке указать адрес yoursite.com/article/overview, то браузер выведет:

Article list goes here!

Вызов контроллера с аргументами

Допустим, стоит задача отобразить определённую статью. Например, статья с наименованием your-article-title и с идентификатором 1.

URL будет выглядить следующим образом: yoursite.com/article/view/your-article-title/1. Последние два сегменти URL строки передаются в метод view().

application/classes/controller/article.php

class Controller_Article extends Controller
{
    public function action_index()
    {
        echo 'Hello World!';
    }

    public function action_overview()
    {
        echo 'Article list goes here!';
    }

    public function action_view($title, $id)
    {
        echo $id . ' - ' . $title;
        // в идеале следует извлекать запись из базы данных
    }
}

При переходе на страницу yoursite.com/article/view/your-article-title/1 , можно будет увидеть

1 - your-article-title