|
Туристические сим-карты Адреса и телефоны фирм-партнеров
tezsale.ru
|
|
Справочник турфирм Москвы, Петербурга и др. Поррядок вступления.
cpravki.ru
|
|
Сеть магазинов умных развлечений. Справочник предприятий.
read.ru
|
Итак, Кохану мы благополучно установили. Давайте попробуем разобраться, откуда же появляется эта ужасная надпись hello, world! и даже попробуем заменить ее на что-то другое. Как я уже говорил, в Кохане точкой входа является файл index.php. Если вы его откроете, то почти в самом конце увидите подключение еще одного весьма важного файла под названием bootstrap.php. Чтобы вы не подумали, что я обманываю, вот код:
// Bootstrap the application require APPPATH.'bootstrap'.EXT;
Если внимательно посмотреть на самое начало файла, то там консанта EXT как раз определяется (как .php), т.е. можно сделать так, что файлы будут иметь другое расширение (не .php) и таким образом всех запутать. Но лучше все-таки этого не делать.
Ну а константа APPPATH — это собственно путь к файлу (который кстати можно гибко настроить). «Собирается» этот путь следующим образом (тут же в файле, рядышком):
$application = 'application'; ... // Set the full path to the docroot define('DOCROOT', realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR); // Make the application relative to the docroot, for symlink'd index.php if ( ! is_dir($application) AND is_dir(DOCROOT.$application)) $application = DOCROOT.$application; ... // Define the absolute paths for configured directories define('APPPATH', realpath($application).DIRECTORY_SEPARATOR);
Думаю тут все понятно — мы получаем абсолютный путь к нашему файлу (кстати совершенно аналогично пути прописаны и для двух других папок). Из всего этого видно, что искать файл bootstrap.php надо в папке application. Собственно там он и лежит, прямо в корне. Откроем его и посмотрим в самый низ. Там есть такие строчки:
/** * Set the routes. Each route must have a minimum of a name, a URI and a set of * defaults for the URI. */ Route::set('default', '(<controller>(/<action>(/<id>)))') ->defaults(array( 'controller' => 'welcome', 'action' => 'index', ));
Пока не будем сильно разбираться, что здесь написано, т.к. Роуты мы рассмотрим более подробно несколько позже. Но чисто визуально видно, что здесь прописан запуск контроллера по умолчанию и контроллером этим является контроллер welcome. А лежит он в папке application/classes/controller. Если мы заглянем в него, то увидим там класс Controller_Welcome у которого есть метод action_index(), который как раз и выводит приветствие. Давайте поэкспериментируем и создадим еще один метод, например test:
public function action_test() { $this->response->body('test!'); }
Как нам теперь вывести test! на экран ? Есть два варианта. Можно прописать в bootstrap.php, чтобы этот метод запускался по умолчанию. Просто в Роуте меняем index на test, т.е. пишем:
Route::set('default', '(<controller>(/<action>(/<id>)))') ->defaults(array( 'controller' => 'welcome', 'action' => 'test', ));
Запускаем и получаем нашу надпись. Ну или второй вариант (только верните index обратно). Запуск через так называемый ЧПУ (человеко-понятный УРЛ). Попробуйте ввести в адресной строке такой URL:
http://kohana/welcome/test и запустите. Сработало ? На самом деле и не должно было. Так как мы не настроили Кохану до конца. В принципе, если мы поменяем адрес на такой http://kohana/index.php/welcome/test, то все запустится. Но выглядит это мягко говоря странно. Убрать этот index.php в адресной строке очень просто. В файле bootstrap.php есть настройки, в которые мы должны добавить одну строчку ‘index_file’ => FALSE:
/** * Initialize Kohana, setting the default options. * * The following options are available: ... * - string index_file name of your index file, usually "index.php" index.php ... */ Kohana::init(array( 'base_url' => '/', 'index_file' => FALSE ));
Если почитать комментарий, то видно какие параметры может принимать массив для передачи в статический метод init класса Kohana. Среди них есть как раз ключ index_file, которому мы присваиваем значение FALSE, т.е. не хотим видеть файл index_file.
Следующее, что нужно сделать, — это переименовать файл example.htaccess, который лежит в корне сайта, в .htaccess, чтобы включить модуль Mod Rewrite.
Теперь если мы запустим наш первый вариант, напишем в адресной строке http://kohana/welcome/test, то увидим, что теперь все работает как надо.
Пожалуйста, зарегистрируйтесь для комментирования.
Доброго времени суток! Скажите, что эта за константа такая APPPATH, — пошарил Нэт, — не смог найти ничего вразумительного.
Эта константа в индексе объявляется
В ней хранится путь до папки Application
Подскажите пожалуйста … Пытаюсь освоить этот фреймворк … Всё выполняю, но не получается сделать ЧПУ в виде http://kohana/welcome/test, пишетЖ
Not Found
The requested URL /welcome/ was not found on this server.
Хотя и в Apache включал модуль ReWrite. В чём моя ошибка ???
По ссылке http://kohana/index.php/welcome/test переходит, а по http://kohana/welcome/test — нет ???
Т.е. вы и ‘index_file’ => FALSE написали и файл example.htaccess переименовали и не работает ?
Так точно … Что это может быть ??? Просто везде эта метода и все пишут что работает нормально, а у меня нет … Я уже и на более позднюю версию kohana откатывал и всё равно ничего не помогло.
А где проверяете ? На локалхосте ?
Конечно. А где ж еще мне бы сначала для себя освоить, а потом …
Ну многие сразу заливают на хостинг. Связка — Денвер ?
Да, только скачано всё в отдельности: Apache 2.2, PHP 5, MySQL, phpMyadmin и сам фреймворк … Всё работает, иду по видеоурокам Kohana-3.1, вот на моменте получения ЧПУ и запарился …
попробуйте заменить
RewriteRule .* index.php/$0 [PT]
на
RewriteRule .* index.php [L]
В каком это файле ???
.htaccess
тоже самое, такое ощущение как будто Kohana вообще не реагирует на изменеия в файле
напишите туда белиберду. если продолжит открывать страницу, значит действительно не видит.
Да написал белиберду, а он всё равно по ссылке http://kohana/index.php/welcome/test переходит, а по http://kohana/welcome/test — нет. Где включить поддержку в Kohana этого файла ???
А это уже не Коханы проблемы. Это настройки вашего локального сервера. Работать не будет на любом вашем сайте, при чем тут Кохана.
Деня, спасибо. Вычитал что надо было ещё включить в доступе к папке со своими сайтами AllowOverride All и Ооо чудо заработало:
[b]AllowOverride All[/b]
# Options None
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
Поздравляю вас
Теперь можно кодить дальше.
Можно пожалуйста подробнее где именно прописывать это нужно не могли бы копирнуть ваш пример….
я просто не настраивал никаких виртуальных имен… я в папку test1.ru все залил…
в httpd.conf прописал эти настройки :
AllowOverride All
# Options None
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
типа так :
AllowOverride All
# Options None
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
Всё равно index.php в адресной строке нужен…без него не работает….
Помогите : )
…….
AllowOverride All
# Options None
Options Indexes FollowSymLinks
Order allow,deny
Allow from all
не прописало директорию выше…((
Directory «c:/WebServers/home/test1.ru/www»
Сначала проверяете, работает ли вообще .htaccess (как вариант можно написать туда белиберду). Если не работает, то да, что-то с настройками сервера. Какая у вас связка стоит, вы же ничего не написали.
спс разобрался…. нужно было кохану в корень ставить (test1.ru) иначе как то криво работает….
Работает нормально. Просто если ставите не в корень, то надо это указывать.
Здравствуйте, помогите пожалуйста настроить ЧПУ. Вроде всё сделал согласно инструкции, но…
Использую денвер, для фреймворка создал отдельный хост, типа KOHANA->WWW, в директорию WWW, согласно Вашей инструкции распаковал содержимое архива с фреймворком, hello world увидел )
Прописал в bootstrap.php:
Kohana::init(array(
‘base_url’ => ‘/’,
‘index_file’ => FALSE
));
Подключил htaccess:
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
Order Deny,Allow
Deny From All
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
Но адреса вида http://kohana/welcome/index не работают (
Дааа, пора прекращать работать ночами )
Разобрался. Всё было банально — при переименовании дефолтного example.htaccess случайно убрал точку о_О
Денис, я в PHP мало понимаю.
но пытаюсь пройти описание.
не получается следующее:
я прописала в файле bootstrap.php :
Kohana::init(array(
‘base_url’ => ‘/’,
‘index_file’ => FALSE
));
и переименовала файл example.htaccess в example_1.htaccess
потом ввела в адр.строку:
http://kohana/welcome/test
то в броузере вот такое предупреждение:
Notice: Use of undefined constant ‘index_file’ — assumed ‘‘index_file’’ in Z:\home\kohana\www\application\bootstrap.php on line 84
[Денвер: показать возможную причину ошибки]test!
на 84 стр. находится:
‘index_file’ => FALSE
что я сделала не так?
спасибо
извиняюсь.
я переименовала файл example.htaccess в .htaccess
ну, вобщем, всё равно ничего не получается.
все файлы и папки коханы находятся в корневой папке сайта (т.е. ничего вложенного нет)
в чём причина?
вот что пишет броузер:
http://s1.ipicture.ru/uploads/20120511/NjDRVva7.jpg
Неправильно написан index_file. В неправильных кавычках или вообще без кавычек.