Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день , собственно вопрос по сабжу в книШках и инете пока ответа не нашел. Я включаю в шаблон подшаблон при помощи @include . Как мне к этому подшаблону прописать маршрут к контроллеру ??? Если делаю через Route и @yield('content') то все работает. Но я хочу чтобы подшаблон всегда отображался в левой части контента например , независимо от выбранного маршрута. А контроллер нужен для выборки данных из базы. Надеюсь я правильно поставил вопрос.
А может я иду не по тому пути , прошу подсказать правильное решение. Спасибо.
Изменено DzonyBB (13.09.2018 12:37:46)
Не в сети
Вот контроллер
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Department;
use App\Category;
//use App\Http\Requests\CategoryRequest;
//use App\Subcategory;
//use App\Article;
class DepartmentController extends Controller
{
protected $layout = 'departments.department';
public function department()
{
$department = Department::where('stat',0 )->
orderBy('department_id')->get();
$category =Category::orderBy('category_id')->get();
return view("departments.departments",['department'=>$department,'category'=>$category]);
}
}
А вот подшаблон
@extends(request()->route()->getController()->parentView)
@section('departments')
<div class="container-fluid forms_container">
<ul>
@foreach ($department as $dep)
<li>
{{$dep->name}}
<ul>
@foreach ($category as $cat)
@if($dep->department_id===$cat->department_id)
<li>
{{$cat->name}}
</li>
@endif
@endforeach
</ul>
</li>
@endforeach
</ul>
</div>
@endsection
Не в сети
Братья славяне , я так и не понял , или вопрос слишком сложный , или слишком тупой. ))
Или я не правильно осветил ситуацию????
Тогда я поставлю вопрос по-другому , мне нужно из таблиц в базе данных сделать выборку категорий , и соответствующих им подкатегорий , и передать в шаблон страницы. Все это я сделал при помощи Route и Controller , но меню появляется на странице естесственно , когда я выбираю в меню например каталог товаров, но если я перехожу на другую вкладку , оно естесственно пропадает. А мне нужно чтобы оно постоянно находилось на странице независимо от выбранного маршрута. Спасибо.
P.S В Smarty этот скрипт PHP привязывается примерно так.
{* admin_menu.tpl *}
{load_presentation_object filename="admin_menu" assign="obj"}
<h1 class="admin_menu_title"> Administratoriaus meniu </h1>
<p class="admin_menu"> |
<a href="{$obj->mLinkToStoreAdmin}">Catalog Admin</a> |
<a href="{$obj->mLinkToCartsAdmin}">Carts Admin</a> |
<a href="{$obj->mLinkToOrdersAdmin}">Orders Admin</a> |
<a href="{$obj->mLinkToStoreFront}">Pagrindinis</a> |
<a href="{$obj->mLinkToLogout}">Logout</a> |
</p>
Изменено DzonyBB (13.09.2018 19:10:17)
Не в сети
Я включаю в шаблон подшаблон при помощи @include . Как мне к этому подшаблону прописать маршрут к контроллеру ???
Никак. Это бессмыслица: иметь маршрут к тому, что не вызывается самостоятельным запросом. Мне кажется на самом деле ты хочешь неявно передавать данные в некий шаблон. Для этого в Blade есть механизм View Composer.
https://laravel.com/docs/5.6/views#view-composers
https://vegibit.com/what-is-a-view-composer-in-laravel/
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Спасибо за ответ . Я обязательно пройдусь по ссылкам . В кратце я уже описал что я хочу . На странице имеется подшаблон Категория товаров например . Мне нужно из таблицы Category например выбрать категории и передать массив в этот подшаблон. Как это лучше реализовать? Может есть ссылка на пример , где эта тема обсуждалась? Спасибо.
Не в сети
Я бы через виджеты сделал
https://github.com/arrilot/laravel-widgets
Не в сети
Я бы через виджеты сделал
Сорри , вся проблема в том , что я Laravel только осваиваю , до этого работал со Smarty , но Laravel мне пока нравится больше, просто нужно вникнуть . Поэтому с удовольствием рассмотрю все полезные советы. Извиняюсь за тупость , про виджеты нельзя ли немного поподробнее ??? Про composer вроде как нашел информацию. Спасибо.
P.S Прошелся по ссылке , надеюсь разберусь . Но хотелось бы если можно достоинства и недостатки обоих из методов.
Так как в этой книШке LARAVEL тоже описывается view composer .
Спасибо .
Изменено DzonyBB (14.09.2018 17:52:29)
Не в сети
Но хотелось бы если можно достоинства и недостатки обоих из методов.
Честно скажу что View Composer еще несмотрел. Начинал с 5.4 версии Laravel, там еще не было View Composer. Поэтому работал с виджетами для отображения меню и прочих элементов страницы которые загружаются отдельно.
Если с точки зрения обучения - то попробуйте оба варианта. Потом тут отпишитесь какой вам показался удобнее и правильнее для вас (с точки зрнения вашей логики построения страницы)
Изменено SemasPing (15.09.2018 15:41:27)
Не в сети
Начинал с 5.4 версии Laravel, там еще не было View Composer.
я установил 5.6. ОК! Если получится. отпишусь.
Не в сети
Че то я туплю совсем . а как передать в composer не одну , а две переменные .Пробую таким методом , выбивает ошибку в месте обьявления массива. Опять же в описании не нашел ответа. Прошу тыкнуть носом.
public $data=array($departments,$categories);
public function compose(View $data)
{
$departments->with('department', Department::where('stat',0 )
->orderBy('department_id')->get());
$categories->with('category', Category::orderBy('name')->get());
}
Не в сети
В принципе вторая переменная и не нужна , обошелся одной не знаю насколько криво.
public function compose(View $view)
{
$view->with('department', Department::where('stat',0 )
->orderBy('department_id')->get());
$view->with('category', Category::orderBy('name')->get());
}
Не в сети
Спасибо всем откликнувшемся.
Не в сети
Страницы 1