Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 03.08.2012 17:15:10

Создаю свой первый пакет

Здравствуйте, пытаюсь создать свой пакет, смотрите что получается, пакет называется 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, я что-то не так делаю? Помогите пожалуйста.

Не в сети

#2 03.08.2012 17:23:38

Re: Создаю свой первый пакет

Или нельзя сделать автозагрузку классов в пакете ?

Не в сети

#3 03.08.2012 17:25:41

Re: Создаю свой первый пакет

Пропущен handles, который указывает, какие URL обрабатывает пакет и обрабатывает ли их вообще:

PHP
<?php
return array(
  
'bebeka' => array('handles' => 'bebeka'),
);

Не в сети

#4 03.08.2012 17:30:35

Re: Создаю свой первый пакет

ошибка 404 не пропала. если в routes.php поместить:

Route::get('(:bundle)', function() {
return 'test';
});

все работает, но мне же нужно чтобы загружались контроллеры..

Не в сети

#5 03.08.2012 17:36:05

Re: Создаю свой первый пакет

Пропущен handles, который указывает, какие URL обрабатывает пакет и обрабатывает ли их вообще:

PHP
<?php
return array(
  
'bebeka' => array('handles' => 'bebeka'),
);

Может быть у вас есть готовый пример который уже это делает? Возможно я допустил у себя где-то ошибку. На официальном репозитарии пакетов, нет такого примера ( точнее я не нашел ).

Не в сети

#6 03.08.2012 17:49:47

Re: Создаю свой первый пакет

  1. Может быть у вас есть готовый пример который уже это делает?

Скачай дистрибутив и увидишь в application/bundles.php (у тебя ошибка в имени в первом посте):

PHP
  'docs' => array('handles' => 'docs'),
  1. все работает, но мне же нужно чтобы загружались контроллеры…

Проверь, что скрипты контроллеров действительно лежат в bundles/bebeka/controllers/*.php.

Не в сети

#7 03.08.2012 18:03:21

Re: Создаю свой первый пакет

Да, действительно ошибся в названии файла, но на сервере файл лежит верно.

Можете скачать архив с пакетом? в архиве я разместил файлы так как в корневой папке на сервере.

http://narod.ru/disk/58828381001.eacce68518cb043751031d6c7aab3e66/bebeka.zip.html

Не в сети

#8 03.08.2012 22:51:10

Re: Создаю свой первый пакет

Архив посмотрел, ошибка в именовании класса контроллера. Контроллер отвечает на запрос корень_сайта/имя_пакета/имя_контроллера/[действие]; класс должен называться Пакет_Контроллер_Controller; у тебя же он называется просто PHPBebeka_Controller.

Да, и в start.php не обязательно настраивать автозагрузчик.

В общем, переименуй класс в controllers/bebeka.php в PHPBebeka_Bebeka_Controller и открой http://localhost/laravel/bebeka/bebeka. Будет вызван метод action_index().

p.s: в ICQ я бываю в свободное время, как и на форуме.

Не в сети

#9 03.08.2012 23:22:05

Re: Создаю свой первый пакет

Спасибо!

А вызвать просто /bebeka/ не получится ? или это как раз можно сделать через:

Route::get('/', function() {

});

Не в сети

#10 03.08.2012 23:23:27

Re: Создаю свой первый пакет

bebeka/bebeka/ - работает, отлично.

Не в сети

#11 04.08.2012 07:37:13

Re: Создаю свой первый пакет

  1. А вызвать просто /bebeka/ не получится?

Можно, для этого назовите его home. Он работает как обычный контроллер, но открывается по запросам http://localhost/laravel/bebeka/bebeka и http://localhost/laravel/bebeka/bebeka/home/.

  1. PHPRoute::get('/', function() {

Кстати, таким образом можно регистрировать маршруты и они перекроют стандартные пути контроллера, если зарегистрированы после вызова PHPRoute::controller(). Это иногда бывает полезно.

p.s: не цитируй, пожалуйста, сообщение целиком.

Не в сети

#12 04.08.2012 09:27:27

Re: Создаю свой первый пакет

спасибо за ответы в icq! Возможно кому-то будет интересно, если laravel установлен и работает на домене допустим:

test.com

Пакет называется bebeka, и должен открываться по адресу:

test.com/bebeka

Тогда за этот адрес отвечает стандартный контроллер: PHPBebeka_Home_Controller.

Не в сети

Подвал раздела