#10 Laravel 5: Form & HTML Helper

Основы 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 отработает успешно и создаст нам ссылки.

 

Добавить отзыв (пожелание, комментарий)