Laravel по-русски

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

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

#1 20.01.2013 11:58:18

Как сделать роут для http://mysite/any-slug

Почему не работает такой роут?

Route::get('/(:all)', array('uses'=>'static@index'));
class Static_Controller extends Base_Controller {

	public function action_index($slug)
	{
		return "Static page. Slug = " . $slug;
	}

}

Такой работает, но тогда в пути будет присутствовать static

Route::get('static/(:all)', array('uses'=>'static@index'));

Т.е. на сайте может быть много обычных страниц, которые будут доступны по адресам
http://mysite/any-slug-1
http://mysite/any-slug-2
...
http://mysite/any-slug-n

Не в сети

#2 20.01.2013 12:15:08

Re: Как сделать роут для http://mysite/any-slug

  1. '/(:all)'

URL не должен начинаться со слэша, если только это не коречь (просто '/'). Для примера можешь открыть laravel\laravel.php и посмотреть, как там определён «catch-all»-маршрут 404.

Не в сети

#3 20.01.2013 15:48:14

Re: Как сделать роут для http://mysite/any-slug

Это я читал (URL не должен начинаться со слэша)
Так а что делать?
Как-то выходит столько всего можно и так и так, а каков прицип - не понятно.

Не в сети

#4 20.01.2013 22:39:39

Re: Как сделать роут для http://mysite/any-slug

В общем элементарную весчь я так и не понял как сделать. Как выставить контроллер или роут по умолчанию
И как вообще получить информацию отладки. Поставил 'log' => true, - ничего не пишет в лог
Выдает 404 - это классно, а как посмотреть в чем проблема, я понимаю что роут не срабатывает. 404 - это для пользователя
Да и вообще интересно, на одном и том же адресе http://mysite/xxx выдает 404 -
раз показывает - We need a map.
другой - We took a wrong turn.
третий - I think we're lost.
как это так?)

Не в сети

#5 21.01.2013 12:37:35

Re: Как сделать роут для http://mysite/any-slug

Странно сработал этот роут
Route::get('(:any)', array('uses'=>'static@index'));
Хотя я его писал ранее почти самый первый раз, когда пробовал. Может где-то закешировало.

Не в сети

#6 01.05.2013 13:01:04

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: Как сделать роут для http://mysite/any-slug

Proger_XP пишет:

}%> %%'/(:all)'%%
URL не должен начинаться со слэша, если только это не коречь (просто %%'/'%%). Для примера можешь открыть %%laravel\laravel.php%% и посмотреть, как там определён "catch-all"-маршрут 404.

Как это роут не может начинаться со слеша laravel\routing\router.php:213

И из примера это также понятно Router::register(array('GET', '/', 'GET /home'), function() {return 'Home!';});

Не в сети

#7 01.05.2013 14:00:12

Re: Как сделать роут для http://mysite/any-slug

  1. Как это роут не может начинаться со слеша

В документации написано, что URL / — единственный случай, когда нужно использовать слэш. Собственно, если ты передашь в register() пустую строку, то она будет установлена в /:

PHP
  $uri ltrim(str_replace('(:bundle)', static::$bundle$uri), '/');

  if(
$uri == '')
  {
    
$uri '/';
  }

Другое дело, что ведущие / в любом случае отсекаются и маршрут будет работать даже если определён как /home. А вот слэши в конце его поломают.

Не в сети

#8 01.05.2013 22:38:29

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: Как сделать роут для http://mysite/any-slug

В конце, да, тут я с тобой согласен))) Кстати с праздником)

Не в сети

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