Laravel по-русски

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

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

#51 Re: Laravel 5.x » Репозиторий » 01.12.2016 15:35:55

Почему? Если переделать, чтобы они читались из базы в момент, когда я пытаюсь прочитать репозиторий, то, наверное, все будет нормально.

#52 Re: Laravel 5.x » Репозиторий » 01.12.2016 15:19:55

Да, модель Eloquent. Репозиторий нужен потому что категории выводятся в нескольких местах и каждый раз их получать, наверное, не очень хорошо.

#53 Re: Laravel 5.x » Репозиторий » 01.12.2016 15:09:49

А в какой момент данные ложить в репозиторий? При попытке получить их первый раз или в middleware?

#54 Re: Laravel 5.x » Репозиторий » 01.12.2016 15:04:54

covobo пишет:

Категории нужны на всех страницах сайта?

Можешь кэшировать их и грузить всегда.

На всех.
Кэшировать вместо использования репозитория? А простые данные можно ложить в кэш?

#55 Laravel 5.x » Репозиторий » 01.12.2016 14:52:32

MadHatter
Ответов: 8

Здравствуйте. Я сделал репозиторий и фасад для него. В репозитории храниться список категорий магазина. Каким образом лучше получать из него данные: в контроллере и передавать в вид или сразу в виде? На данный момент данные в него записываются из middleware. Каким образом лучше сделать: оставить как есть или при попытке чтения, если данных нет, то получить и записать?

#56 Re: Laravel 5.x » Получение категории и подкатегории из одной таблицы за один запрос » 01.12.2016 10:10:37

Спасибо большое. Прописал в самой модели отношения. Все работает. Спасибо большое. Вы меня часто выручаете.

#57 Laravel 5.x » Получение категории и подкатегории из одной таблицы за один запрос » 30.11.2016 16:46:40

MadHatter
Ответов: 2

Здравствуйте. Предположим есть таблица категорий в которой записаны категории и подкатегории. Структура таблицы примерно такая:
id | slug | name | parent
id - идетификатор
slug - ссылка из адресной строки, по которой происходит получение категории
name - имя категории
parent - идентификатор категории к которой принадлежит подкатегория.
Предположи что мне нужно получить категорию и ее подкатегории по ссылке. Можно ли получить категорию, узнать ее id и по нему получить подкатегории за один запрос?
Или лучше сделать две таблицы и связать их через один ко многим?

#58 Re: Laravel 5.x » Перевос сайта на внутреннюю директорию VDS » 18.11.2016 19:14:27

Спасибо за помощь всем.
hzone, да, я с вами конечно согласен. Но этот VDS чисто для моего личного использования. На основной работе , к сожалению, компьютер не тянет винду 7, для установки пхп7. А он нужен для моих некоторых проектов.
Nogard7491, я смотрел там. Но проблема в том что для этого нужен домен, а мне не очень хотелось регистрировать его.
Проблема оказалась в том что права на папку storage были 755. Немного не понимаю. Почему в ларе по умолчанию не стоят данные права? И еще есть небольшой вопрос. Почему при установке через терминал в composer.json прописалась версия php 5.6, хотя ее я даже не ставил, а установил только php 7.0?

#59 Re: Laravel 5.x » Перевос сайта на внутреннюю директорию VDS » 18.11.2016 12:58:41

А как их настроить правильно? А то я пытался, но ничего не получилось.

#60 Re: Laravel 5.x » Перевос сайта на внутреннюю директорию VDS » 18.11.2016 10:34:29

Я так понимаю что проблема в путях. Но где их менять?

#61 Laravel 5.x » Перевос сайта на внутреннюю директорию VDS » 18.11.2016 10:15:32

MadHatter
Ответов: 6

Здравствуйте. Возникла проблема следующего характера. Есть VDS с  Apach и PHP7. Если я устанавливаю фреймворк в корневую папку /var/www/ то все работает отлично. Но как только я переношу сайт в папку /var/www/laravel сразу появляется NotFoundHttpException. Если ввожу domain.ru/laravel/public - получаю пустую страницу.
.htacces

AddDefaultCharset utf-8
AddType 'text/html; charset=utf-8' .html .htm .shtml
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^public
    RewriteRule ^(.*)$ public/$1 [L]
    
</IfModule>

В чем может быть проблема?

#62 Re: Laravel 5.x » Пользовательская конфигурация » 28.09.2016 15:50:28

Понятно, хорошо, спасибо большое за помощь.
Идентификатор сессии там уже больше для «перебдеть» - Да, чтобы 200% уникальный результат получить)

#63 Re: Laravel 5.x » Пользовательская конфигурация » 28.09.2016 15:23:29

Понял, спс за ответы.
А можно еще пару вопросов не по теме, как к знающему разработчику?
1. Будет ли данная функция генерировать действительно уникальный идентификатор?

protected function _generateUid(Request $request)
    {
        return uniqid($request->session()->getId(), true);
    }

Ведь в данный момент времени не может быть двух пользователей с одинаковым идентификатором сессии.
2. Правильно ли выносить запросы в модель? Например так:

class Price extends Model
     public function getBySid(string $sid)
    {
        try{
            return $this->whereSid($sid)->first();
        } catch (\Exception $e){
            return false;
        }
    }
}

#64 Re: Laravel 5.x » Пользовательская конфигурация » 28.09.2016 15:09:18

По факту он никуда не привязан. Эти значения будут находиться в куке в виде сериализованного массива. Когда пользователь заходит на сайт. Данный массив считывается и записывается в конфиг для более удобного обращения. А далее инжектить, как я писал во втором посте. Либо пользовательские объекты так инжектить не получится?

#65 Re: Laravel 5.x » Пользовательская конфигурация » 28.09.2016 14:44:44

Да, текущего. А в чем преимущество ленивой инициализации перед инъекцией? Просто мне может потребоваться использовать данный конфиг в middleware, моделях. А где будет находиться это юзер проперти?

#66 Re: Laravel 5.x » Пользовательская конфигурация » 28.09.2016 13:35:29

Предполагается только конфиг одного юзера. В нем будет содержаться уникальный идентификатор, для получения записей из бд. Например переменная указывающая на то в каком виде предоставлять информацию(список, мозаика) и т.д.

#67 Re: Laravel 5.x » Пользовательская конфигурация » 28.09.2016 13:24:26

Например примерно такой:

class IndexController extends Contoller{
    public function index(Config $config){
        $items = ItemsModel::whereUid($config->getUid())->get();
    }
}

Какое-нибудь подобное использование может потребоваться например в middleware.

#68 Laravel 5.x » Пользовательская конфигурация » 28.09.2016 13:11:39

MadHatter
Ответов: 12

Здравствуйте. У меня такой вопрос. Предположим что мне нужна какая-то конфигурация, доступная в любой точке проекта. В ней есть какой-нибудь идентификатор пользователя по которому в базе буду храниться различные данные, а также другие данные. Например так:

class Config{
    private $_uid;
    public function getUid(){
        if(empty($this->_uid)){
            /* Генерируем uid и сохраняем в переменную */
        }
        return $this->_uid;
    }
}

И далее с помощью инъекций добавляем его куда нужно.
Правильно ли так делать?

#69 Re: Laravel 5.x » View Composer для некоторых роутов » 30.07.2016 19:24:15

Я думал о таком решении. В моем случае я могу сделать как-то так:

$path = $this->_request->path();
$pathParts = explode('/', $path);
if($pathParts[0] == /* Тому чему нужно */){
     /*Здесь все происходит*/
}

Но мне кажется это не сильно элегантно.

#70 Laravel 5.x » View Composer для некоторых роутов » 30.07.2016 18:54:39

MadHatter
Ответов: 2

Здравствуйте. Использую View Composer для создания хлебных крошек. Но проблема в том, что для их формирования требуется Api, что не очень-то быстро. И отображать мне их нужно не на всех страницах. Как можно указать какой-нибудь фильтр, когда подключать данный сервис провайдер?

class ComposerServiceProvider extends ServiceProvider
{
    public function boot()
    {
        View::composer('*', 'App\Http\Composers\BreadCrumbComposer');
    }
}
class BreadCrumbComposer
{
    public function compose(View $view)
    {
        /*Здесь все происходит*/
    }
}

#71 Re: Laravel 5.x » Как вернуть ошибку в шаблон из пользовательского класса » 26.07.2016 16:07:06

Да, в некоторых контроллерах идет много подобных проверок. С учетом вызовов всех методов контроллер получается все равно очень жирным. Валидацию я делаю с помощью Реквестов. Но ведь Реквест как-то может перенаправить обратно на представление с сохранением всех ошибок. Интересно как?

#72 Re: Laravel 5.x » Как вернуть ошибку в шаблон из пользовательского класса » 26.07.2016 15:07:34

И тогда в контроллере получается много таких проверок. Что мне совсем не нравится.

#73 Re: Laravel 5.x » Как вернуть ошибку в шаблон из пользовательского класса » 26.07.2016 15:05:31

Ну например как-то так:

class IndexController {
    $array = [1, 2, 3];
    $class = new ServiceLayer();
    $newArray = $class->sortArray();
    if($newArray === false){
        return back()->withErrors(['Ошибка']);
    }
    return back()->with(compact('newArray'));
}
class ServiceLayer {
    public function sortArray($array){
        if(gettype($array) != 'array' || count($array) <= 0){
            return false;
        }
        foreach($array as $item){
            /*Производим действия над элементом массива*/
        }
        return $array;
    }
}

#74 Re: Laravel 5.x » Как вернуть ошибку в шаблон из пользовательского класса » 26.07.2016 14:54:18

Просто некоторые контроллеры получаются излишне жирными. Я так понимаю что часть кода правильно выносить именно в Service Layer. Но там может генерироваться много ошибок, например массив нулевой длины или пустая строка. И тогда приходится все эти ошибки возвращать в контроллер и он будет состоять из кучи проверок, что тоже, наверное, неправильно.

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