Laravel по-русски

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

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

#1 Re: Laravel 5.x » Лаконичное создание меню навигации » 03.12.2015 13:46:42

Я делал через провайдеры с использованием контракта 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'
        ]
    ]
];

#2 Laravel 4 » Неограниченный уровень вложенности в каталоге » 20.12.2013 17:38:48

sharov
Ответов: 1

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

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

#3 Re: Laravel 4 » L4. Ajax запросы и шаблон » 18.11.2013 17:17:11

Пока не до конца разобрался с идеологией фреймворка, да и исходниками
Пытался вызвать View::render() напрямую
Спасибо за помощь.

#4 Re: Laravel 4 » L4. Ajax запросы и шаблон » 18.11.2013 14:31:15

Cheshirrski пишет:

}%Сделайте dd(View::make('admin.testAjax')) и посмотрите насколько это "пустое значение". А преобразовав     View::make('admin.testAjax') в строку вы и получаете строку.

хм...
ясно, а тогда не подскажете как отрендерить шаблон и получить на выходе строку а не объект?
мне надо в браузер вернуть массив

$out['content'] = array(
    'то что получилось после обработки шаблона',
    'append'
)

#5 Re: Laravel 4 » L4. Ajax запросы и шаблон » 18.11.2013 12:49:41

Artdevue пишет:

В лоб не вижу у вас возврата json

следуя докам ларавел вернет ответ в json даже без явного указания если запрос данных пришел через ajax

Artdevue пишет:

И возвращаете вы обычный массив?

а можно вернуть волшебный? smile

Artdevue пишет:

У вас получается аякс или не аякс, всё равно вернёт ответ 200 ?

с роутингом все ок

А вопрос явный почему View::make('admin.testAjax') вернет пустое значение, а View::make('admin.testAjax').'' или (string)View::make('admin.testAjax') вернет то что было в шаблоне

#6 Laravel 4 » L4. Ajax запросы и шаблон » 18.11.2013 08:22:54

sharov
Ответов: 10

Добрый день.
Ситуация такова. Есть страница, на которой необходимо загружать данные по средством аякса (админская часть),
Нужно сформировать какие либо данные, отрендерить шаблон и все это вернуть 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, может где-нибудь у меня не правильные настройки сервера? Так как арендую сервак без всяких лишних панелей управления и все настройки делаю вручную.

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