@sacred1

Реализация маршрутизации в Laravel?

Всем привет!
Только начал осваивать Laravel,это мой первый php-фреймворк,и столкнулся с небольшими трудностями в этой mvc модели.Собственно вопросы вот какие:
1)Как написано из доков контроллеры нужны чтобы не описывать всю маршрутизацию в роуте,а просто указываем в роуте на имя контроллера и имя так называемого экшена,тоесть в роуте мы должны описать каждый экшен?просто самые простые контроллеры в роуте выглядят так
Route::get('/', [
   'as' => 'add',
   'uses' => 'HomeController@index'
]);

2)И вообще обязательно ли делать на каждую страницу этот самый контроллеры?
3)И как вставить обычную ссылку в свой шаблон на страницу например /add.php (c контроллером который написал вышел,ну и который в свою очередь возвращаетreturn View::make('add');)
Был бы очень признателен если кто нибудь объяснил общедоступными словами работу маршрутизацию в целом
  • Вопрос задан
  • 3111 просмотров
Пригласить эксперта
Ответы на вопрос 2
1) По хорошему, чтобы потом не драть себе волосы на попе в попытках дебага (а они будут, так как нет опыта), ДА. А так - как пожелаете, можно и ресурсный роут или роут контроллера/модели...
2) Если будет развиваться ресурс - лучше ДА. А так - как пожелаете.
3) {{ URL::route('route.name') }}

Функционал маршрутизации прост - смотрит на URI и сверяет его с заданным набором описанных роутов. Если находит совпадение - отрабатывает роут.
Ответ написан
Комментировать
zvermafia
@zvermafia
WebDev
На примере!
Предполагаем что у нас есть две страницы "Главная" и страница "О нас".

Для них пишем маршруты, это будет выглядеть примерно так (app/routes.php):
// Для главной странице
Route::get('/', array('as' => 'home', 'uses' => 'SomeController@getIndex'));

// И для странице о нас
Route::get('/about-us', array('as' => 'about-us', 'uses' => 'SomeController@getAboutUs'));


То есть маршрут "example.com/" будет вызывать метод getIndex() в контроллере SomeController,
также маршрут "example.com/about-us" будет вызывать метод getAboutUs() в контроллере SomeController.

Сам контроллер (app/controllers/SomeController.php):
<?php
class SomeController extends BaseController
{
   // метод для "Главная"
    public function getIndex()
    {
        return View::make("index");
    }

   // метод для "О нас"
    public function getAboutUs()
    {
        return View::make("about-us");
    }
}


Теперь сами шаблоны (index, about-us):
app/views/index.blade.php:
<a href="{{ route('about-us') }}">Перейти на страницу "О нас"</a>
<h1>Вы находитесь в главной странице</h1>


app/views/about-us.blade.php:
<a href="{{ route('home') }}">Главная</a>
<h1>Вы находитесь в странице "О нас"</h1>


Думаю понятно...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы