Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте, пытаюсь создать свой пакет, смотрите что получается, пакет называется bebeka, и располагается в директории:
bundles/bebeka/
Файлы с этой директории:
routes.php:
<?php
Route::controller(Controller::detect('bebeka'));
start.php
<?php
Autoloader::map(array(
'Base_Controller' => path('bundle') . 'controllers/base.php',
'Bebeka_Controller' => path('bundle') . 'controllers/bebeka.php',
));
и контроллер, который находится в папке controllers:
<?php
class Bebeka_Controller extends Base_Controller {
public function action_index() {
return 'test';
}
}
также в файле: application/boundles.php подключил пакет:
return array(
'bebeka',
);
Теперь по идее когда я захожу по адресу site.com/bebeka
должна открываться страница с текстом: test.
Но пишет ошибку 404, я что-то не так делаю? Помогите пожалуйста.
Не в сети
Или нельзя сделать автозагрузку классов в пакете ?
Не в сети
Не в сети
ошибка 404 не пропала. если в routes.php поместить:
Route::get('(:bundle)', function() {
return 'test';
});
все работает, но мне же нужно чтобы загружались контроллеры..
Не в сети
Пропущен handles, который указывает, какие URL обрабатывает пакет и обрабатывает ли их вообще:
PHP<?php
return array(
'bebeka' => array('handles' => 'bebeka'),
);
Может быть у вас есть готовый пример который уже это делает? Возможно я допустил у себя где-то ошибку. На официальном репозитарии пакетов, нет такого примера ( точнее я не нашел ).
Не в сети
- Может быть у вас есть готовый пример который уже это делает?
Скачай дистрибутив и увидишь в application/bundles.php (у тебя ошибка в имени в первом посте):
'docs' => array('handles' => 'docs'),
- все работает, но мне же нужно чтобы загружались контроллеры…
Проверь, что скрипты контроллеров действительно лежат в bundles/bebeka/controllers/*.php.
Не в сети
Не в сети
Архив посмотрел, ошибка в именовании класса контроллера. Контроллер отвечает на запрос корень_сайта/имя_пакета/имя_контроллера/[действие]; класс должен называться Пакет_Контроллер_Controller; у тебя же он называется просто PHPBebeka_Controller
.
Да, и в start.php не обязательно настраивать автозагрузчик.
В общем, переименуй класс в controllers/bebeka.php в PHPBebeka_Bebeka_Controller
и открой http://localhost/laravel/bebeka/bebeka. Будет вызван метод action_index().
Не в сети
Спасибо!
А вызвать просто /bebeka/ не получится ? или это как раз можно сделать через:
Route::get('/', function() {
});
Не в сети
bebeka/bebeka/ - работает, отлично.
Не в сети
- А вызвать просто /bebeka/ не получится?
Можно, для этого назовите его home. Он работает как обычный контроллер, но открывается по запросам http://localhost/laravel/bebeka/bebeka и http://localhost/laravel/bebeka/bebeka/home/.
PHPRoute::get('/', function() {
Кстати, таким образом можно регистрировать маршруты и они перекроют стандартные пути контроллера, если зарегистрированы после вызова PHPRoute::controller()
. Это иногда бывает полезно.
Не в сети
Не в сети
Страницы 1