Задать вопрос
Ответы пользователя по тегу Laravel
  • Почему не подключается не один файл, не работают роуты в laravel?

    @sequelone
    В любой непонятной ситуации надо чистить кэш. Решает 99% проблем) В терминале надо ввести команду:

    php artisan optimize:clear

    Обновит сразу всё от кэша до роутов.
    Ответ написан
  • Расхождение даты в базе и при выводе в Laravel, как решить проблему?

    @sequelone
    Как вариант можно написать свою функцию в Helper. К примеру нужно добавить в файл composer.json в секцию "autoload":

    "autoload": {
            ...,
            "files": [
                "app/Helpers/functions.php"
            ]
        },


    чтобы получилось:

    "autoload": {
            "psr-4": {
                "App\\": "app/",
                "Database\\Factories\\": "database/factories/",
                "Database\\Seeders\\": "database/seeders/"
            },
            "files": [
                "app/Helpers/functions.php"
            ]
        },


    Затем в папке app создать папку Helpers, а в ней файл functions.php. В этот файл теперь можно добавлять любые функции, которые можно будет вызывать где угодно. Вот пример использования:

    <?php
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\DB;
    
        function formattedDate($value) {
            $date = new \DateTime($value);
            $intlFormatter = new IntlDateFormatter('ru_RU', IntlDateFormatter::GREGORIAN, IntlDateFormatter::SHORT);
            $intlFormatter->setPattern('d MMMM YYYY в HH:mm');
    
            $formattedDate = $intlFormatter->format($date);
    
            return $formattedDate;
        }


    И в Blade шаблоне где нужно вызываем функцию {{ formattedDate($item->created_at) }}

    Данная функция будет преобразовывать разные форматы данных на выходе.
    Ответ написан
  • Как правильно указать в сервис провайдере своего пакета папку public из vendor?

    @sequelone Автор вопроса
    Судя по всему без публикаций в основную папку ничего работать не будет. Решение вот такое.

    В сервис провайдере своего пакета пишем путь до публикации:

    $this->publishes([
                __DIR__ . '/../public' => public_path('vendor/sone'),
            ], 'Sone-public');


    В папке public пакета находятся все файлы и папки (например: /img/, /js/, /css/).

    Чтобы автоматизировать все это, добавить следующие записи в composer.json в секцию scripts: раздел "post-install-cmd" и "post-update-cmd":

    "scripts": {
        "post-install-cmd": [
              "...",
              "php artisan vendor:publish --tag=public --force"
        ],
        "post-update-cmd": [
              "...",
              "php artisan vendor:publish --tag=public --force"
        ],
    },


    Как видно из названий секций одна выполняется при установке пакета через Composer, а другая при обновлении. По логике, туда же можно добавлять и другие artisan команды для автоматизации процессов.
    Ответ написан
    Комментировать
  • Как загрузить изображение в CRUD модели Laravel и сохранить результат в БД?

    @sequelone Автор вопроса
    Решилось вот таким образом.

    /**
         * Update the specified resource in storage.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \App\Models\Round  $round
         * @return \Illuminate\Http\Response
         */
        public function update(Request $request, Round $round)
        {
            $request->validate([
                'name' => 'required'
            ]);
    
            $request->merge([
                'status' => $request->has('status') ? true : false
            ]);
    
            $round->update($request->all());
    
            if($request->has('image')) {
    
                $image = $request->file('image');
                $extension = $image->extension();
                $imageName = $image->getClientOriginalName();
                $image->move(storage_path('app/public/images/battles/battle'.$request->battle_id.'/round'.$request->rnum), $imageName);
                $round->image = $imageName;
    
            }
    
            $round->save();
    
            return redirect()->back()
                ->with('success', 'Запись обновлена.');
        }
    Ответ написан
    Комментировать