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

105 lines
5.1 KiB
Markdown
Raw Normal View History

2010-08-21 04:43:03 +00:00
# Контроллеры
Контроллеры являются промежуточным звеном между моделью и представлением. Они передают информацию в модель для изменения данных, и запрашивают информацию от модели. Например, операции работы с базой данных: вставка (insert), изменение (update) и удаление (delete) как операции редактирования данных, и выборка (select) для извлечения данных. Информацию, полученную от модели, контроллеры перенаправляют в представления, которые содержат конечный результат, предназначенный для отображения пользователям.
Контроллеры вызываются с помощью URL. За более подробной информацией обратитесь к разделу [URL и ссылки](start.urls).
## Название контроллера и его содержание
Имя класса контроллера должно соответствовать имени файла.
**Соглашения при использовании контроллеров**
* имя файла должно быть в нижнем регистре, например: `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
~~~