Laravel по-русски

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

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

#1 05.03.2017 18:54:36

Как правельно разбить вид

Привет, я вот учу Laravel и вот решил делать сайт на нем(чисто в учебных целях). Вот есть такой шаблон, я его разбил на части(видел красный цветом)
Фото шаблона

То есть как я понял, мне нужно для каждого вида создать свой контроллер и делать выборку в нем ? и передавать переменую ввид sidebar
Вот так я склевиваю шаблон

@extends('layouts.site')

@section('menu')
    @include(env('TEMHE').'.menu')
@endsection

@section('slider')
    @include(env('TEMHE').'.slider')
@endsection

@section('content')
    @include(env('TEMHE').'.content')
@endsection

@section('sidebar')
    @include(env('TEMHE').'.sidebar')
@endsection

Правильно ли ?

Не в сети

#2 06.03.2017 13:19:56

Re: Как правельно разбить вид

нет. ларавель – не битрикс, не надо пытаться из него сделать то чем он не является. контент и есть содержание вида, с остальным надо решить что является лейаутом а что включаемыми элементами. меню так например точно – часть лейаута. в сами включаемые элементы данные могут идти как из контроллера (если они зависимы от контента страницы) или вообще собираться отдельным вью-композером.

Не в сети

#3 06.03.2017 14:21:48

Re: Как правельно разбить вид

constb пишет:

нет. ларавель – не битрикс, не надо пытаться из него сделать то чем он не является. контент и есть содержание вида, с остальным надо решить что является лейаутом а что включаемыми элементами. меню так например точно – часть лейаута. в сами включаемые элементы данные могут идти как из контроллера (если они зависимы от контента страницы) или вообще собираться отдельным вью-композером.

Так лучшие меню оставить в лейауте ? а как туда передать переменные ? для каждого создавать контролер

Не в сети

#4 06.03.2017 14:51:47

Re: Как правельно разбить вид

какие туда переменные надо передавать?

Не в сети

#5 06.03.2017 14:56:43

Re: Как правельно разбить вид

constb пишет:

какие туда переменные надо передавать?

Смотрите, если я оставляю меню и sibebar и футер в лайоте.
Мне же надо будет из БД выбрать меню, sibebar и футер и передать результаты выборки в шаблон лайот, какой контролер должен это обрабатывать, или как правельно сделать

Не в сети

#6 06.03.2017 15:54:45

Re: Как правельно разбить вид

Можете на моем примери показать (

Не в сети

#7 06.03.2017 15:57:53

Re: Как правельно разбить вид

а зачем хранить меню и сайдбар в базе? если набор страниц фиксированный, их можно прямо в вид захардкодить

Не в сети

#8 06.03.2017 16:31:23

Re: Как правельно разбить вид

constb пишет:

а зачем хранить меню и сайдбар в базе? если набор страниц фиксированный, их можно прямо в вид захардкодить

НЕ много не пойму а что в каждом контролеры вызывать выборку меню и сайтбара

Не в сети

#9 06.03.2017 16:38:12

Re: Как правельно разбить вид

если список фиксированный, то и выбирать ничего не надо

Не в сети

#10 06.03.2017 16:39:15

Re: Как правельно разбить вид

вообще если судить по дизайну, выбор ларавеля как минимум странен. сайт – типичная визитка, вордпресс для таких задач идеален

Не в сети

#11 06.03.2017 16:41:44

Re: Как правельно разбить вид

Да я меню хранить буду в БД )) и категории будут в БД. Я знаю что сайт на WP подходит, проще сделать, да и шаблон WordPress я для учебных целий делаю на Laravel на WordPress я бы уже сделал бы его

Не в сети

#12 06.03.2017 16:49:32

Re: Как правельно разбить вид

Скажи, а если я создам котроел MainController который будет делать выборку для меню катрегорий и футера и будет передавать эти значения в вид лайоут

Не в сети

#13 06.03.2017 17:28:55

Re: Как правельно разбить вид

нет, этот код придётся копипастить в каждый экшен, это не дело. для лейаута данные должны выбираться в view composer-е, в документации они описаны. я недавно постил пример – https://laravel.ru/forum/viewtopic.php?pid=11511#p11511

Не в сети

#14 06.03.2017 17:36:49

Re: Как правельно разбить вид

Это в каждом контролеры вызывать это ужас (( А если наследовать и в родительском контрлере вызывать методы и все

Не в сети

#15 06.03.2017 18:15:02

Re: Как правельно разбить вид

Зачем в кажом контролере? Создает глобальный view composer и все

Не в сети

#16 06.03.2017 18:15:43

Re: Как правельно разбить вид

это что view composer где про не го можно почитать

Не в сети

#17 06.03.2017 18:38:10

Re: Как правельно разбить вид

Не в сети

#18 07.03.2017 12:01:48

Re: Как правельно разбить вид

Что то для меня сложно сильно )
Подскажите а способа по проше нету ?)

Не в сети

#19 07.03.2017 12:53:38

Re: Как правельно разбить вид

есть – вордпресс smile

Не в сети

#20 07.03.2017 19:46:34

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Как правельно разбить вид

Не знаю как другие, но я делаю так.
// layout.blade.php

<head>
    <meta name="robots" content="@yield('robots', 'index, follow')" />
    <meta name="description" content="@yield('description')" />
    <meta name="keywords" content="@yield('keywords')" />
    <meta name="_token" content="{{ csrf_token() }}">
    <title>@yield('title') - Бла бла</title>
</head>
<body>
@include('frontend.partials.header')
<main class="main-content">@yield('content')</main>
@include('frontend.partials.footer')
@yield('js')
<script>$.ajaxSetup({headers:{'X-CSRF-TOKEN':App.token()}});</script>
</body>
</html>

Затем, если надо меню брать из базы, и что б как ты сказал "каждый раз не передавать его в каждом контроллере". Пишем в AppServiceProvider вот это

view()->composer('frontend.partials.header', function($view){
            $view->with('categories', Category::orderBy('created_at', 'asc')->active()->get(['slug', 'name',]));
        });

Затем в вью header спокойно прогоняем переменную categories по циклу. Но каждый раз будит идти запрос к базе для выборки меню. И лучше бы тут закешировать его.
Profit!

Не в сети

#21 08.03.2017 16:05:08

Re: Как правельно разбить вид

Как то сложновато

Не в сети

#22 08.03.2017 17:01:49

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Как правельно разбить вид

matros97 пишет:

Как то сложновато

не сложнее чем на чистом пыхе

Не в сети

#23 08.03.2017 20:17:10

Re: Как правельно разбить вид

TrueKanonir пишет:
matros97 пишет:

Как то сложновато

не сложнее чем на чистом пыхе

А скажите а в каком методе вы вызывает view->composer
И как я понял, мне надо header sidebar footer вызвать как у вас и все будет работать

Не в сети

#24 08.03.2017 21:15:26

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Как правельно разбить вид

matros97 пишет:
TrueKanonir пишет:
matros97 пишет:

Как то сложновато

не сложнее чем на чистом пыхе

А скажите а в каком методе вы вызывает view->composer
И как я понял, мне надо header sidebar footer вызвать как у вас и все будет работать

Я же написал

Пишем в AppServiceProvider вот это

view()->composer('frontend.partials.header', function($view){
            $view->with('categories', Category::orderBy('created_at', 'asc')->active()->get(['slug', 'name',]));
        });

В AppServiceProvider этот код надо вставить.
Этот код только для хедера. Если нужен футер, то продублируйте его, и измените зедер на футер.
Но тогда уже 2 дополнительных запроса будет.

Не в сети

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