 Laravel по-русски
Laravel по-русски
      
      
    Русское сообщество разработки на 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