Бортовой журнал Ктулху

Блог на Laravel 4 - страницы

Продолжение статьи о создании блога на Laravel.

Создание функционала главной страницы

Прописываем нужный нам маршрут для главной страницы.
Редактируем файл \app\routes.php

Route::get('/', [
'as' => 'index',
'uses' => 'HomeController@index'
]);

Это значит, что за главную страницу сайта будет отвечать контроллер HomeController и его метод index. Алиас для этого поведеня именуется как index.
Переходим в HomeController.php и создаем метод index()

public function index()
{
return View::make('index');
}

Не зыбываем поставить права 777 на /app/storage

В Laravel используется шаблонизатор Blade.
Как мы видим наш новый экшен использует шаблон index. Давайте его создадим.
Переходим в папку \app\views\ и создаем файл index.blade.php
В php файлах не ставим теги <!--?php.
Теперь нам надо создать шаблонную структуру страниц. Так называемые лайауты.
В папке \app\view\ создаем новую папку layouts и в ней создадим файлы
default.blade.php, header.blade.php, footer.blade.php

Подключим файлы заголовка и футера в default.blade.php

@include('layouts.header')
@yield('content')
@include('layouts.footer')

В файле index.blade.php запишем следующее:

@extends('layouts.default')
@section('content')
test text
@stop

Содержимое файлов header.blade.php, footer.blade.php соответственно:

<!--

<html>
 <head>
 <meta charset="utf-8">
 <title>Blog</title>
 </head>
 <body>

 </body>
</html>
-->

Получаем данные из БД


Заполним таблицу posts тестовыми записями.
Например через seeds.

Заполнение тестовыми данными.
Создать файл
/blog/app/database/seeds/PostsTableSeeder.php
Название файла должно совпадать с названием класса.
Содержимое:

class PostsTableSeeder extends Seeder {
public function run() {
 DB::table('posts')->delete();
 
 for ($i=0; $i < 5000; $i++) { 
 $posts = array(
 'title' => 'title'.$i,
 'body' => 'body'.$i,
 'slug' => 'test'.$i,
 'enabled' => 1
 );
 DB::table('posts')->insert($posts); 
 }
}
}

В DatabaseSeeder.php добавить строку

$this->call('PostsTableSeeder');

С консоли запустить

php artisan db:seed

 laravel seed console

Для того чтобы приступить к получению данных из БД и выводу их на странице, нам нужна модель.
Создадим файл модели \app\models\Post.php с содержимым

class Post extends Eloquent {
 
 
}

Теперь в HomeController.php, в методе index осуществим запрос к БД на получение всех данных таблицы posts:

public function index()
{
 $posts = Post::get();
 return View::make('index')->with('posts', $posts);
}

Теперь выведем полученные данные на главную страницу (файл index.blade.php)
На месте test text

public function index()
{
return View::make('index');
}
0

На этом этапе будет выведен список страниц блога.

Страница записи блога

Так как у нас появляется новый url, то требуется создать для него новый маршрут.
Открываем файл routes.php и добавляем следующие строки:

public function index()
{
return View::make('index');
}
1

Как мы видим за функционал страницы просмотра поста будет отвечать PostController.php, а именно его метод getPost
Создаем PostController.php с содержимым.
public function index()
{
return View::make('index');
}
2

Доработаем шаблон главной страницы - добавим ссылку на страницу просмотра проста.

Заменить это

public function index()
{
return View::make('index');
}
3

на это
public function index()
{
return View::make('index');
}
4

Создадим шаблон для страницы статьи блога \view\posts\show.blade.php
public function index()
{
return View::make('index');
}
5

Страница просмотра готова.

Постраничная навигация

Все содержимое сайта на одной странице - это не очень хорошо.

Меняем содержимое HomeController.php

public function index()
{
return View::make('index');
}
6

на следующее:

public function index()
{
return View::make('index');
}
7

В шаблоне index.blade.php после окончания цикла foreach

public function index()
{
return View::make('index');
}
8