Основы Laravel 5
В этом уроке мы немного закрепим тему Scope в Laravel 5 и затронем новую тему - Forms & HTML.
У нас есть Область (scope) для получения опубликованных статей и сделаем так же область для получения НЕ опубликованных статей.
Создадим новую область и метод в модели Post для получения не опубликованных статей:
public function scopeUnPublished($query) { $query->where('published_at', '=>', Carbon::now()) ->orWhere('published', '=', 0); }
public function getUnPublishedPosts() { return $this->latest('published_at')->unPublished()->get(); }
Создадим контроллер для формирования страницы не опубликованных статей:
public function unpublished(Post $postModel) { $posts = $postModel->getUnPublishedPosts(); return view('post.index', ['posts' => $posts]); }
Создадим маршрут к контроллеру:
get('unpublished', ['as' => 'posts.unpublished', 'uses' => 'PostController@unpublished']);
Представление нам создавать не надо, так как из кода понятно что мы будем использовать то же представление что и для главной страницы - index.blade.php
Доработаем представление index.blade.php:
@extends('app') @section('content') <div> {!! link_to_route('posts', 'published') !!} {!! link_to_route('posts.unpublished', 'unpublished') !!} div> @foreach($posts as $post) <article> <h2>{!! $post->title !!}h2> <p> {!! $post->excerpt !!} p> <p> published: {{ $post->published_at }} p> article> @endforeach @stop
Здесь мы с помощью хелпер-функции link_to_route() создаем ссылки на страницы сайта основываясь на маршрутах.
В четвертой версии Laravel у нас бы это заработало сразу, так как нужные хелперы идут вместе с фреймворком.
В Laravel 5 хелперы Form и Html исключены из комплекта, но так же развиваются. Их нам потребуется установить отдельно. Более подробно об установке можно почитать здесь - http://laravelcollective.com/docs/5.0/html
Итак, давайте установим Forms & HTML
Добавляем строки в composer.json
... "require": { "laravel/framework": "5.0.*", "laravelcollective/html": "~5.0" },...
Обновляемся:
php composer.phar update
Теперь выполним определенные настройки фреймворка - файл /config/app.php
'providers' => [ ... 'Collective\Html\HtmlServiceProvider', ],
...
'aliases' => [ ... 'Form' => 'Collective\Html\FormFacade', 'Html' => 'Collective\Html\HtmlFacade', ],
После этого функция link_to_route отработает успешно и создаст нам ссылки.