Laravel по-русски

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

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

#1 Laravel 5 » Создатель представлений(в чём смысл?) » 20.02.2019 00:47:19

Kirir
Ответов: 0

Прочитал в доке о создателе представлений, но не понял что он из себя представляет и как его использовать. Написано, что он создаётся при создании экземпляра представления до отрисовки хтмл, но не понимаю в каких ситуациях это может понадобиться? В случае composer ведь тоже до отрисовки доп переменные объявляются.

#2 Прочее » Популяризация сообщества Laravel » 14.02.2019 22:51:41

Kirir
Ответов: 0

Всем привет! На дворе уже 2019-ый. Комьюнити Laravel в мире растёт как на дрожжах(а также дружба Laravel с Vue), но я заметил, что конкретно в России активное ларавел-сообщество только среди представителей разработчиков дочернего инструментария на основе ларавел - October CMS. Есть 2 канала чисто для Laravel в телеграмме, но они закрыты sad Хочу поинтересоваться, как так?) А проводят ли ларавельщики в России(Москве и Питере) мероприятия? В общем, хочу узнать про все подробности о движухе по ларе. Также хочу по возможности стать активистом и помочь в привлечении свежей крови для нашего любимого фреймворка.

#3 Re: Вакансии » Ищу консультанта по Laravel » 14.02.2019 22:40:54

Здорова. Ну, я сам давно с laravel не работал, но с конца прошлого года активно въезжаю, т.к надоел друпал, а другие цмс и фреймы не понравились. Если хочешь, могу рассказать основные темы, что бы ты мог сделать простое spa с vue, crud для контента(с принятием файлов),регистрацией, авторизацией, проверкой роли при работе с контентом, ну и вьюхами, выводом ошибок форм.

#4 Laravel 5 » [RuntimeException] Could not scan for classes inside "database" » 08.02.2019 00:09:53

Kirir
Ответов: 0

[RuntimeException]
Could not scan for classes inside "database" which does not appear to be a file nor a folder

В общем, ввёл composer install, пошла установка пакетов

Package phpoffice/phpexcel is abandoned, you should avoid using it. Use phpoffice/phpspreadsheet instead.
Writing lock file
Generating autoload files

И потом вот такое вылезло

[RuntimeException]
  Could not scan for classes inside "database" which does not appear to be a file nor a folder

В инете написано, что..
1) Надо удалить composer.lock. Не сработало.
2) Сгенерировать ключ. Не сработало
3) Поставить другую версию пхпх, ну с 5.6 оно и работает(с 7-кой сразу пишет, что нужна 5.6), но всё равно такая ошибка.

#5 Общий раздел » Запустить Laradock на Windows 7 » 04.02.2019 19:52:14

Kirir
Ответов: 0

В общем, поставил docker tolbox, далее прошёлся по инструкции установки ларадок
https://laradock.io
Ларадок запускается, всё работает.

D:\laradock>docker-compose up nginx mysql phpmyadmin redis workspace
Creating network "laradock_frontend" with driver "bridge"
Creating network "laradock_backend" with driver "bridge"
Creating network "laradock_default" with the default driver
Creating laradock_docker-in-docker_1 ... done
Creating laradock_mysql_1 ... done
Creating laradock_redis_1 ... done
Creating laradock_workspace_1 ... done
Creating laradock_phpmyadmin_1 ... done
Creating laradock_php-fpm_1 ... done
Creating laradock_nginx_1 ... done
Attaching to laradock_mysql_1, laradock_redis_1, laradock_workspace_1, laradock_
phpmyadmin_1, laradock_nginx_1
mysql_1 | Initializing database

Однако при переходе на http://localhost пишет, что ничего нет.

Потом попробовал
https://stackoverflow.com/questions/...st-not-working
run docker run -p 80:80 nginx
и нгникс запустился по адресу
http://192.168.99.100
Но это не то и я не совсем понимаю как туда поставить ларавел проект.

Хотел перезапустить контейнеры, ввёл docker nginx stop, а потом снова запустил и теперь ошибка с ngnix(как его отключить? перезапуск докера не помог)
ERROR: for laradock_nginx_1 Cannot start service nginx: driver failed programmi
ng external connectivity on endpoint laradock_nginx_1

#7 Re: Laravel 5 » Как правильно организовать spa с авторизацией? » 25.01.2019 23:24:55

Мне пока что самым простым решением кажется не блокировать роутинг компонентов на уровне хуков, а просто вынести из компонента app шапку с навигацией в отдельный компонент и пихать его во все компоненты-страницы, что бы каждый компонент просто делал именно свой запрос, принимал нужные данные + инфу о юзере, показывал доступный контент и передавать инфу о юзере в дочерний компонент шапки, что бы он решил, какие пункты меню показывать, а какие нет. Единственное, что не нравится в этом способе - это копипаста компонента шапки во все компоненты-страницы.

#8 Laravel 5 » Как правильно организовать spa с авторизацией? » 25.01.2019 20:29:09

Kirir
Ответов: 2

Как правильно организовать spa с авторизацией?
Сначала я хотел делать запрос в App родительском компоненте в created, но если спа уже есть и юзер переходит на страницу компонента, а его забанили), то нужно выводить ошибку. Глобальный хук beforeEach позволяет мне отловить событие, но как мне выводить иконку загрузки до перехода?

Или лучше оставить, что бы юзер мог проходить на любую страницу-компонент и просто в событии created/update в запросе при получении ответа с json(с параметром, что доступа нет) выводить в шаблоне(если роль запрещает) сообщение об этом? Но ведь мне и у родительского компонента надо блокировать/скрывать некоторые навигационное меню в шаблоне, как передавать родителю данные дочер компонента? Редукс?

#9 Re: Laravel 5 » Настроить маршрут по пути из переменных » 25.01.2019 16:48:45

Малось гробокопание, но в 5.7 маршрут по любому урл можно сделать так

Route::get('/{any}', 'SpaController@index')->where('any', '.*');

#10 Laravel 5 » Не работает hot module replacment » 24.01.2019 22:40:50

Kirir
Ответов: 0

Не работает hot module replacment, сделал как написано тут
https://laracasts.com/discuss/channels/ … rowsersync
При запуске он пытается открыть http://localhost:3000 но не работает(пробывал хост заменить)

const mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.browserSync(
    {
        proxy: "test.dev",
        notify: false
    }

)

mix.browserSync()

mix.js('resources/js/app.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css');

#11 Re: Laravel 5 » Laravel 5.7 не работает ExampleComponent(не рендерит компоненты) » 23.01.2019 23:59:50

Тю, вопрос решён - надо было просто запихнуть компонент внутрь div app

#12 Laravel 5 » Laravel 5.7 не работает ExampleComponent(не рендерит компоненты) » 23.01.2019 20:20:21

Kirir
Ответов: 1

Установил модули ноды
npm install

Включил смотрителя-сборщика (работает успешно, реагирует на изменения, пересобирает)
npm run watch

В welcone.blade вписал
<example-component></example-component>
а ниже body подключил app.js (файл подгружается без ошибок, если вписать в resources\js\app.js консоль лог с чем-нибудь, то выводит)

Компонент в виде тегов виден, но он не генерирует своё содержимое, ошибок в консоли нет. Странно.

п.с почему-то работает только в таком варианте(просто div он тоже не видит и не генерит компонент)
<example-component id = "example-component"></example-component>
  <script type="text/javascript">
        new Vue({ el: '#example-component' })
    </script>

#13 Re: Поиск работы » Ищу работу на постоянку » 28.12.2018 23:10:44

Поднимаю тему и дополняю информацией
"В данный момент я хочу соскочить с фриланса и работы с рендомным стеком, поэтому ищу постоянную работу джуниора ларавел(+vue) на удалёнку. Первый пример проекта(нек моменты улучшу во время праздников, т.к о них ещё не читал) https://gitlab.com/Kir1/lara.git Сам последние 2 месяца разрабатывал проект по договору на z-song(по просьбе клиента)(с вкрапленями своих расширений), до этого работал на друпал 7(также писал свои чистые решения на js,php с ajax и верстаю кроссплатформенно). Доку ещё не всю прочитал по ларе, с vue немного пока работал, но хочу нормально работать и учится. Главное офиц трудоустройство(мб не сразу, по зп, думаю, договоримся) и адекватный коллектив. В общем, пишите в личку

#15 Laravel 5 » Как получить название контроллера и экшена в представлении? » 14.12.2018 12:54:58

Kirir
Ответов: 2

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

#16 Re: Laravel 5 » Как сделать правило валидации на проверку 2 полей за раз? » 01.12.2018 12:39:42

А как? Валидатор принимает массив, где на каждое поле устанавливаются правила, а мне по сути нужно чтоб была проверка сразу 2 полей. По-идее, конечно, можно проводить валидацию, а после него отдельно брать значение 2 полей и смотреть есть ли запись в промежуточной таблице, что бы потом занести в массив ошибок конкретно эту ошибку. Но может всё-таки в валидатор такую проверку можно засунуть?

https://laravel.com/docs/5.7/validation как Using Closures в офиц документации на создание ф-ции для валидации, но чтоб сразу 2 поля в ней можно было прописать.

#17 Laravel 5 » Как сделать правило валидации на проверку 2 полей за раз? » 01.12.2018 01:29:31

Kirir
Ответов: 4

Допустим, есть форма с 2 селектами на создание связи между человеком и машиной(то есть для промежуточной таблицы между ними). Нужно сделать проверку, что бы нельзя было создать связь между машиной и человеком, у которых уже создана запись в промежуточной таблице.

#19 Laravel 5 » Отправка почты через Amazon » 28.11.2018 15:05:32

Kirir
Ответов: 0

Сделал по инструкции

Чтобы использовать драйвер Amazon SES, сначала установите Amazon AWS SDK для PHP. Вы можете установить эту библиотеку, добавив следующую строку в раздел require файла composer.json и выполнив команду composer update:

"aws/aws-sdk-php": "~3.0"
Затем задайте для параметра driver значение ses в конфигурационном файле config/mail.php и проверьте, что в конфигурационном файле config/services.php есть следующие параметры:

'ses' => [
    'key' => 'your-ses-key',
    'secret' => 'your-ses-secret',
    'region' => 'ses-region',  // например, us-east-1
],

Получаю ошибку

"""
Error executing "SendRawEmail" on "[url]https://email.secret.amazonaws.com[/url]"; AWS HTTP error: Client error: `POST [url]https://email.secret.amazonaws.com[/url]` resulted i ▶
<ErrorResponse xmlns="http://ses.amazonaws.com/doc/2010-12-01/">\n
  <Error>\n
    <Type>Sender</Type>\n
    <Code>SignatureDo (truncated...)\n
 SignatureDoesNotMatch (client): Signature expired: 20181128T105844Z is now earlier than 20181128T115340Z (20181128T115840Z - 5 min.) - <ErrorResponse xmlns="ht ▶
  <Error>\n
    <Type>Sender</Type>\n
    <Code>SignatureDoesNotMatch</Code>\n
    <Message>Signature expired: 20181128T105844Z is now earlier than 20181128T115340Z (20181128T115840Z - 5 min.)</Message>\n
  </Error>\n
  <RequestId>f211ee1d-f304-11e8-83f1-ab61f90e2e4d</RequestId>\n
</ErrorResponse>\n

Потом пробывал https://vannstudios.com/send-bulk-email … on-ses-t-1
но тут беда в том, что просто нет провайдера  Aws\Laravel\AwsServiceProvider даже после установки пакета

Ну я попробывал обычную отправку почты, без класса фасада, оно сработало, но выдавало ошибку с crypto1
https://stackoverflow.com/questions/444 … 1/44423204
Решение оттуда также не помогло

#20 Laravel 5 » Безопасность Laravel » 28.11.2018 00:14:19

Kirir
Ответов: 2

Буду откровенен - возможный заказчик просто скинул список того, что ему требуется от инструментария для разработки сайта, а я чёт и потерялся, поскольку знаю мало о том, что входит в безопасность Laravel. Уж не знаю, будут ли меня ждать, но на будущее хочется всё-таки собрать инфу по безопасности.

Итак:
Поиск уязвимостей в веб-окружении сервера;
...
Поиск уязвимостей серверных компонентов;
...
Проверка на удаленное выполнение произвольного кода;
...
Проверка на наличие инъекций (внедрение кода);
Знаю лишь, что sql инъекции невозможны, т.к работа с бд делается через eloquent или конструктор запросов. Но можно ли как-то ещё внедрить код, я не знаю
Попытки обхода системы аутентификации веб-ресурса;
...
Проверка веб-ресурса на наличие «XSS» / «CSRF» уязвимостей;
Знаю, что можно добавить CSRF в форму.
Попытки перехватить привилегированные аккаунты (или сессии таких аккаунтов);
...
Попытки произвести Remote File Inclusion / Local File Inclusion;
...
Поиск компонентов с известными уязвимостями;
...
Проверка на перенаправление на другие сайты и открытые редиректы;
...
Сканирование директорий и файлов, используя перебор и «google hack»;
...
Анализ поисковых форм, форм регистраций, форм авторизации и т.д.;
...
Проверки ресурса на возможность открытого получения конфиденциальной и секретной информации;
Ну, скрытые файлы можно хранить в storage и давать им доступ через ссылки и уж в роутах проверять права. Это, если я правильно понял, о чём идёт речь.
Атаки класса «race condition»;
...
Внедрение XML-сущностей;
...
Подбор паролей.
Разве от этого кто-то застрахован?

#21 Re: Laravel 5 » Как создать форму с кнопкой для удаления записи? (с роутом resource) » 26.11.2018 19:32:33

Первая дыра - у гет длинна передаваемой строки ограничена в отличии от post. Вторая дыра - у генерируемых resources экшенов show, update и delete одинаковые url и без указания method_field() будет переход к show(и нельзя просто указать метод в атрибуте формы, там должен быть post, иначе работать не будет).

#22 Re: Laravel 5 » Сложный запрос в eloquent на получение записей через несколько связей » 25.11.2018 11:50:23

Пока, думаю, что стоило сессии и лекции выделить столбцы под айди архива, тогда бы и тег мог сразу получать лекции архива и лекция сессию. Ток, увы, уже поздновато это вводить, т.к создана куча записей roll.

#23 Laravel 5 » Сложный запрос в eloquent на получение записей через несколько связей » 24.11.2018 15:29:15

Kirir
Ответов: 1

Итак, есть несколько таблиц:
Архив(куча полей)
День(свои поля и связь 1 к 1 к архиву)
Сессия(свои поля и связь 1 к 1 к дню)
Лекция(свои поля и связь 1 к 1 к сессии)
Тег(просто название)
Тег лекции(промежуточная таблица с айди лекции и тега)

И вот есть страница(вкладка архива, то есть передаётся id архива в get) где можно создавать теги для лекций. 
Вот код, где по сути берётся архив, через него подбираются сессии, через них лекции, которые передаются в поле select формы.

        $arrLectures = [];
        $form = new Form(new ArchiveTagLectureRel);
        $idParent = request()->input('idParent');
        if ($idParent) {
            $archive = Archive::findOrFail($idParent);
            if ($archive) {
                $days = $archive->days;
                if (count($days) > 0) foreach ($days as $day) {
                    $sessions = $day->sessions;
                    if (count($sessions) > 0) foreach ($sessions as $session) {
                        $lectures = $session->lectures;
                        if (count($lectures) > 0) foreach ($lectures as $lecture) {
                            $arrLectures[$lecture->id] = $lecture->title;
                        }
                    }
                }
            }
        }

        $form->select('lecture_id', 'Lecture')->options($arrLectures)->rules('required');

Работает хорошо, однако я понимаю, что по факту это куча раздельный скль запросов, что не ок для быстродействия. Можно ли как-то сделать один qloquent запрос, который бы вернул мне через связи лекции?

#24 Re: Laravel 5 » Как создать форму с кнопкой для удаления записи? (с роутом resource) » 24.11.2018 14:40:42

Parasolka, спасибо, но так неправильно.
Нужно просто в форму с post помимо ключа csrf_token добавить method_field('DELETE') и всё, также с update. В общем, всё по статье, которую я скинулю

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