• Куда лучше помещать одинаковую логику для разных контроллеров/моделей?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Вспомните, что вы пишете не на фреймворке, а на PHP. Делайте классы и пишите весь нужный функционал там. Благо, в Laravel позволяет подключать классы в аргументах конструктора контролера, команды и т.п. Называйте классы так, чтобы вам потом было понятно. Размещайте их в папке Services, например, или в папках, названных по функционалу приложения - Orders, Invoices и т.п. - как вам удобнее.

    Классы пишите по принципу SOLID, чтобы они были узкоспециализированными, слабо связанными друг с другом и т.п.
    Ответ написан
    Комментировать
  • Логика в ларавеле пишеться в контроллерах?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    То, что весь код может писаться в только контроллерах, моделях и вьюхах и больше нигде, потому что мы пишем MVC (а что ещё бывает ?) - это заблуждение, от которого надо избавляться как можно быстрее. Потому что код по большому счёту нельзя писать ни в моделях, ни в контроллерах, ни во вьюхах - ему там не место. Код надо писать в php-классах, которые потом подключать в контроллеры, файлы обработки cli-команд, команды, выполняемые в очереди, в файлы-демоны и т.п.. Код должен выдерживать процедуру смена php-фреймворка просто путём копирования всех файлов и правки классов-репозиториев и других классов сопряжения с конкретным фреймворком. Если ваш код намертво спаян с текущим фреймворком - это признак того, что что-то пошло не так.

    Создавайте внутри папки app свои папки, раскладывайте там классы и подключайте их в конструкторе контроллеров. Почитайте, какие бывают типы классов с точки зрения архитектуры приложения, почитайте про принцип SOLID. Почитайте про Domain Driven Design, погуглите доклады, например https://www.youtube.com/watch?v=rjtbCyacJas .
    Учёба - это постоянный процесс, не останавливайтесь.
    Ответ написан
    Комментировать
  • Как реализовать архтикутуру проекта с 3 ролями пользователей в laravel?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Если у вас всего три роли, причем они пересекаются по функционалу (пользователю достаточно быть в одной из них, чтобы было понятно, что он может делать) - конечно role в User.

    Если ролей много и каждая дает малый набор разрешений, и общее поле разрешений набирается из их суммирования - то, конечно, должна быть связь User c несколькими Role. Или, если хотите погрузиться в полный ад^W^W^W глубже, назначайте каждой Role несколько Permission, чтобы точно управлять, что каждая роль может и менять это в процессе функционирования сайта.
    Ответ написан
    Комментировать
  • Какую CMS/CMF использовать как дополнение к своему проекту?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Посмотрите https://theorchid.github.io/ru/
    Цепляется сбоку.
    Ответ написан
    Комментировать
  • Как с помощью cron запустить метод в контроллере?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Выделите код, который делает что-то в методе контроллера в отдельный класс, например, в неймспейсе App\Services, который положите в папку app\Services. Подключайте его и в конструкторе контроллера и конструкторе команды. И вызывайте и в контроллере и в команде нужный метод с этим функционалом.

    Все остальные методы, типа, прости господи, вызова GET-запроса из крона - адский говнокод.
    Ответ написан
    Комментировать
  • Как связать Vue.js с php?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    На php генерится шаблон страницы вместе с блоком script , где в переменную, например, windows.init_data присваивается json. В js-приложении данные из window.init_data передаются в стор или в стейт главного компонента.
    Ответ написан
    Комментировать
  • Где найти материалы про связь nuxt.js и php?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Я так понимаю, что надо генерить страницу с js-приложением на php, исполнять его и отдавать полученный html+js на клиент, где он уже может жить своей жизнью. Т.е. плясать надо от https://github.com/phpv8/v8js
    Ответ написан
    1 комментарий
  • Какая сейчас топовая программа для git, Git extensions vs?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    SourceTree красива на первый взгляд, но в процессе использования понимаешь, что она неудобная и тормозит.

    SmartGit на первый взгляд уродлив и зачем-то лог показывает в другом окне, но со временем понимаешь, что пользоваться им удобно и в одном окне всю инфу не отобразишь нормально, хорошо, что их два. Попробуй SmartGit.
    Ответ написан
    Комментировать
  • Почему просит GET метод при обновлении записи?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    "HTML forms do not support PUT, PATCH or DELETE actions. So, when defining PUT, PATCH or DELETE routes that are called from an HTML form, you will need to add a hidden _method field to the form. "
    https://laravel.com/docs/5.4/routing#form-method-s...
    Ответ написан
    Комментировать
  • Как правильно сделать экспорт в excel на laravel?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Гуглю "maatwebsite/excel headers already sent", первый результат, "call string() instead of export() then wrap up result in your response"
    Если это не работает, гугли дальше.
    Ответ написан
  • Нужен ли Laravel таким небольшим проектам?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Фреймворки позволяют писать проекты быстро. Размер проекта не важен.
    Ответ написан
    Комментировать
  • Как получить параметр из url в laravel?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Konstantin Malyarov: 3 должно приходить в $id . Параметры роутов надо указывать в виде аргументов метода контроллера. Смотри Dependency Injection & Route Parameters в https://laravel.com/docs/5.4/requests
    Ответ написан
    Комментировать
  • Как сортировать по полю?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Подразумеваем, что есть модель Post с реляцией comments() которая hasMany
    $postsWithCountOfComments = Post::withCount("comments")->get();
    $sortedPosts = $postsWithCountOfComments->sortByDesc('comments_count');

    В laravel не просто так коллекции вместо массивов возвращаются во всех бд-функциях. Пользуйтесь ими, они супер.
    https://laravel.com/docs/5.4/eloquent-relationship...
    https://laravel.com/docs/5.4/collections
    Ответ написан
    4 комментария
  • Как вывести количество постов у пользователя?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    1. Почему join ? Почему бы не сделать через eloquent ? Это же проще и читаемее будет.
    2. Смотрите, вы перебираете $users и в качестве количества постов каждый раз подставляете одно и то же число $userPosts.
    Ответ написан
    3 комментария
  • Как постепенно внедрять vue.js?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Переводить сайт на vue можно по частям, я бы даже сказал, что нужно по частям. В большинстве случаев нет смысла делать чисто одностраничную SPA с одним глобальным vue-приложением - проблемы с индексацией поисковиками, другой непривычный UX для пользователей, вот это всё. Выделите места, где нужна активная интерактивность и их сделайте в виде приложений vue. Начальные данные можно получать не аяксом, кстати, а помещать при генерации страницы на бэкенде в глобальную переменную window и потом в приложении vue их оттуда забирать в beforeMount(). Пример можно посмотреть здесь в readme: https://github.com/spatie/laravel-blade-javascript... . В этом случае пользователь будет избавлен от необходимости после загрузки страницы смотреть на индикатор загрузки данных аяксом.

    А при аякс-запросах, конечно, надо делать вариант 2. Пот бэкенда только json, никаких скриптов - запутаетесь. Также заранее ознакомьтесь, зачем полезно нормализовывать данные для хранения на клиенте, когда-нибудь точно пригодится - https://habrahabr.ru/post/332628/ , https://github.com/paularmstrong/normalizr

    vuex, кстати, использовать можно только если у вас есть зависимые друг от друга приложения (например, приложением сделан сайдбар, где должны меняться числа после действий пользователей). Если такого не нужно, то можно обойтись и без него.
    Ответ написан
    Комментировать
  • Как правильно присвоить значение в ячейку конкретного ряда?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    [0], [1], [2] - это не id, это порядковые номера в массиве.
    Если надо конкретно по id менять, то надо делать как-то так:
    PartnerProductsStatus::where("id", $id)->update(["count" => $value]);
    Ответ написан
    Комментировать
  • Как добавить в ссылку объект модели?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Автобиндинг моделей работает в файле роутов (https://laravel.com/docs/5.4/routing#route-model-b... в генерации ссылок все по прежнему, надо передавать id.
    Вы зачем-то подставляете id модели в имя роута, а не передаёте вторым аргументом: https://laravel.com/docs/5.4/routing#named-routes
    Автобиндинг нет смысла юзать, запутаете себя, а бонуcов никаких. Действуйте по простому, как раньше, оперируйте только id.
    Ответ написан
    Комментировать
  • Сделал RESTful API, что дальше?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Да, это делается для клиента. Клиент может быть браузером, мобильным приложением, веб-приложением другого разработчика, который получает от вас данные по api и т.п.
    В браузере html из полученного json делается при помощи javascript-фреймворков (vue.js, react.js). В мобильных приложениях - внутренними средствами языка, там тоже html не нужен. Тому, кто берёт у вас данные - тоже html не нужен.

    Прежде чем писать RESTful API вам следовало понять, какую задачу вы хотите решить.
    Ответ написан
    Комментировать
  • Свое действие при сочетании клавиш?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    В Laravel, например, для реализации этого народ пишет тулзы, которые генерят или редактируют lang-файлы.
    Веб-админка: https://github.com/barryvdh/laravel-translation-manager
    Консоль: https://github.com/PhiloNL/laravel-translate
    Я думаю, вам нужно сделать для себя что-то такое.
    Ответ написан
    Комментировать
  • Как не переходить по маршруту но выполнить его?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    То, что ничего не показывается на странице - это правильно, у вас так и написано, что ничего не показывать. Чтобы показывалось, надо делать return view(...) , а у вас в контроллерах только вызов метода и всё.

    Первые два метода тоже ничего не возвращают, просто в них у вас код зацикливается на while ($virtual_live == true), нового контента на страницу не приходит, и кажется, что страница перерисовалась. На самом деле просто http-запрос ещё не окончен - обратите внимание на крутилку хрома в табе.

    Вам надо делать return reditect(...) на страницу, которая рисует первоначальную картинку.
    Ответ написан
    1 комментарий