Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Я делал через провайдеры с использованием контракта View
Создал класс WidgetsServiceProvider, который регистрирует наши виджеты в шаблонах. Использует составители
<?php
namespace App\Providers;
use View;
use Illuminate\Support\ServiceProvider;
class WidgetsServiceProvider extends ServiceProvider {
public function boot() {
View::composer('*', 'App\Widgets\CompiledAssets');
View::composer('*', 'App\Widgets\Navbar');
View::composer('*', 'App\Widgets\DataArray');
}
public function register() {
}
}
Сам код виджета
<?php
namespace App\Widgets;
use Route;
use Illuminate\Contracts\View\View;
class Navbar {
protected $currRoute = null;
public function compose(View $view){
$this->currRoute = Route::currentRouteName();
$view->with('navbar', $this);
}
public function create($configs){
/**
* Тут генерим хтмл менюхи
*/
}
}
В нужном месте вызываем $navbar->create($config)
Конфиг это передаем массив с деревом
у меня делается примерно так
$navbar->create(config('manager.navbar'))
<?php
return [
'class' => 'nav navbar-nav',
'items' => [
[
'title' => 'Инструменты менеджера',
'route' => 'manager.index',
'children' => [
'items' => [
[
'title' => 'Запросы и резервы',
'route' => 'manager.orders.rezervs'
],
[
'title' => 'Архивы',
'route' => 'manager.orders.archives'
],
[
'title' => 'Отгрузки',
'route' => 'development'
],
[
'title' => 'Расчеты',
'route' => 'development'
],
[
'title' => 'Бухгалтерия',
'route' => 'development'
]
]
]
],
[
'title' => 'Личный кабинет',
'route' => 'development'
],
[
'title' => 'Подбор оборудования',
'route' => 'development'
],
[
'title' => 'Документация на оборудование',
'route' => 'development'
],
[
'title' => 'Рассчет стоимости',
'route' => 'manager.shipment.calculate'
]
]
];
Добрый день
Есть ли какая либо возможность создать каталог с неограниченным уровнем вложенности
Скажем в роутере прописываем
Route::get('catalog/{*}', array('as' => 'catalog', 'uses' => 'CatalogController@index'));
Данному маршруту могли бы соответствовать урл
1) http://site.ru/catalog/group
2) http://site.ru/catalog/group/subgroup/item
3) http://site.ru/catalog/group/item
Ну и тому подобное с неограниченым уровнем вложенности и все эти пути обращались к методу index
но если скажем у нас есть маршрут
Route::get('catalog/group', array('as' => 'catalog.group', 'uses' => 'CatalogController@group'));
Route::get('catalog/{*}', array('as' => 'catalog', 'uses' => 'CatalogController@index'));
То соответственно 1 путь обращался к методу group, а 2 и 3 к методу index. При том услови что маршрут catalog.group стоит по коду выше маршрута catalog
Пока не до конца разобрался с идеологией фреймворка, да и исходниками
Пытался вызвать View::render() напрямую
Спасибо за помощь.
}%Сделайте dd(View::make('admin.testAjax')) и посмотрите насколько это "пустое значение". А преобразовав View::make('admin.testAjax') в строку вы и получаете строку.
хм...
ясно, а тогда не подскажете как отрендерить шаблон и получить на выходе строку а не объект?
мне надо в браузер вернуть массив
$out['content'] = array(
'то что получилось после обработки шаблона',
'append'
)
В лоб не вижу у вас возврата json
следуя докам ларавел вернет ответ в json даже без явного указания если запрос данных пришел через ajax
И возвращаете вы обычный массив?
а можно вернуть волшебный?
У вас получается аякс или не аякс, всё равно вернёт ответ 200 ?
с роутингом все ок
А вопрос явный почему View::make('admin.testAjax') вернет пустое значение, а View::make('admin.testAjax').'' или (string)View::make('admin.testAjax') вернет то что было в шаблоне
Добрый день.
Ситуация такова. Есть страница, на которой необходимо загружать данные по средством аякса (админская часть),
Нужно сформировать какие либо данные, отрендерить шаблон и все это вернуть json массивом.
Вроде все ок получается, но возникает странная ситуация.
В роутинг и код отправки запроса думаю вникать не стоит, странности творятся в контроллере. Если делать так
public function testJson(){
$out = array();
if(Request::ajax()){
$out['jsonContent'] = array(View::make('admin.testAjax'));
}
return $out;
}
то в бразузер приходит пустой массив, а если сделать так
public function testJson(){
$out = array();
if(Request::ajax()){
$out['jsonContent'] = array(View::make('admin.testAjax').'');
}
return $out;
}
или так
public function testJson(){
$out = array();
$responce = '';
if(Request::ajax()){
$responce .= View::make('admin.testAjax');
$out['jsonContent'] = array($responce);
}
return $out;
}
то все нормально, необходимые данные возвращаются.
Что здесь не так??? Есть ли какой либо еще специльный метод для обработки шаблонов?
Сервер Apache, пробовал на двух версиях php 5.4.4 и 5.5.5, может где-нибудь у меня не правильные настройки сервера? Так как арендую сервак без всяких лишних панелей управления и все настройки делаю вручную.