GithubHelp home page GithubHelp logo

moonshine-software / moonshine Goto Github PK

View Code? Open in Web Editor NEW
452.0 8.0 70.0 20.33 MB

Laravel Admin panel and more. Simple for beginners and powerful for experts. Using Blade, Alpine.js and Tailwind CSS.

Home Page: https://moonshine-laravel.com

License: MIT License

PHP 51.98% CSS 4.56% JavaScript 15.52% Blade 27.94%
dashboard laravel admin panel-admin php alpinejs blade builder cms form-builder

moonshine's People

Contributors

actions-user avatar aka-lamer avatar akostdev avatar alexrififi avatar alexvenga avatar bblbbl avatar dev-lnk avatar dissnik avatar ichinya avatar jampire avatar jerabix avatar k-rustemuly avatar khlystou avatar krasniy-1889 avatar lee-to avatar mirchenkosk avatar opekunov avatar pepperfm avatar second1996 avatar serafimarts avatar seralexs avatar sitisem avatar sweet1s avatar vladsg avatar volgoden34 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

moonshine's Issues

Кастомный путь до ресурс контроллера

Привет!

Хотел бы сказать огромное спасибо за такой крутой проект, которым поделилось коммьюнити CutCode!

Я не очень опытный в Laravel, и после прихода с Magento, где использовался модульный подход к разработке, я решил поискать решение для внедрения модульности в Laravel и нашел отличную библиотеку.

В чём заключается проблема:

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

image

Но вот незадача, контроллер, созданный для того, чтобы отображать сущность MoonShine не может отработать, так как стоит жесткая привязка по неймспейсу контроллеров: ссылка

В связи с чем, я немного поменял работу этого контроллера таким образом, чтобы он определял путь до контроллера на основе ресурсов, зарегистрированных в MoonShine:

code

В прошлых версиях, насколько я понял, можно было менять неймспейс и директорию контроллеров, но, судя по всему, в новых версиях это выпилено:

image

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

Filters can see method doesn't work

MoonShine Version

1.52.2

Laravel Version

10.4.1

PHP Version

8.1.4

Database Driver & Version

mysql 8.0

Description

Can see doesn't work

Steps To Reproduce

Add method)

Ошибка в BelongsTo для фильтрации/создания

При попытке использования BelongsTo для генерации нового объекта или BelongsToFilter для фильтрации в версии 1.7.0 возникает ошибка:
Call to undefined method Leeto\MoonShine\Fields\BelongsTo::isMultiple()

Файл vendor/lee-to/moonshine/resources/views/fields/multi-select.blade.php
Строка 3:
x-model="{{ $field->isMultiple() ? 'selectValues' : 'selectValue' }}"

В документации или информации релиза не указаны изменения в данных параметрах. Полный вывод ошибки:
result.zip

Autocorrect slug field

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

Ошибка запроса в базу при редактировании пользователя если указан префикс для таблиц

MoonShine Version

1.50

Laravel Version

10.10.0

PHP Version

8.2.5

Database Driver & Version

MySQL 8.0.33

Description

После чистой успешной установки последней версии Laravel и Moonshine, в админ панели при нажатии на кнопку редактировать пользователя возникает ошибка:

Illuminate \ Database \ QueryException
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'moonshine_user_roles.id' in 'field list'
SELECT
moonshine_user_roles.id,
moonshine_user_roles.name
FROM
moon_moonshine_user_roles

В настройках .ENV указан префикс к базе данных DB_PREFIX=moon_
Соответсвенно все таблицы в базе имеют префикс.

Скриншоты ошибки:
Screenshot_1
Screenshot_2
Screenshot_3
Screenshot_4

Steps To Reproduce

Никаких дополнительных действий и модификаций кода после установки не производилось.
Для теста в phpmyadmin выполнил этот запрос который пытатся выполнить moonshine:

select moonshine_user_roles.id, moonshine_user_roles.name from moon_moonshine_user_roles

ошибка, нет таких таблиц. Модифицировал запрос с приставкой префикса:

select moon_moonshine_user_roles.id, moon_moonshine_user_roles.name from moon_moonshine_user_roles
и запрос выполнился успешно, полагаю баг в админке moonshine именно из за префикса.

Вложенные Json

Проблема возникает когда в Json вложен еще Json, значения передаются от первого элемента

Ошибка в методе ->copy()

MoonShine Version

1.55.2

Laravel Version

10.9.0

PHP Version

8.1

Database Driver & Version

8.0

Description

Имеется такая конструкция

Text::make('Пароль пользователя', 'password')->required()->default(Str::random(10))->eye()->copy();

При клике на кнопку копирования в консоле и фактически копирование не выполняется.

Uncaught TypeError: navigator.clipboard is undefined

Тоже самое с полем Password

Небольшой баг при использовании сторонней авторизации в классе MoonShineRequest

MoonShine Version

1.60.0

Laravel Version

9

PHP Version

8.0.2

Database Driver & Version

No response

Description

Небольшой баг при использовании сторонней авторизации в классе MoonShineRequest

Steps To Reproduce

Использую стороннюю авторизацию (Spatie)
столкнулся с проблемой при сохранении своей модели User.
Так как в
классе
class MoonShine\Http\Controllers\ProfileController в методе store
текущий пользователь берется из метода $request->user()->update($resultData);

У метода user() в классе class MoonShineRequest параметр $guard = null в $request->user($guard = null)

public function user($guard = null)
    {

        return parent::user($guard ?? 'moonshine');
    }

Так вот если не передать $guard в $request->user('web')->update($resultData); в
class MoonShine\Http\Controllers\ProfileController в методе store
то я не вижу свою Model::User не могу сохранить данные
Поэтому предлагаю например так:

public function user($guard = null)
    {
        $guard = $guard ?? config( 'moonshine.auth.guard','moonshine' );// Так
        return parent::user($guard);
    }

modal in resourceMode

MoonShine Version

1.60.5

Laravel Version

10

PHP Version

8.2

Database Driver & Version

No response

Description

При выводе через resourceMode редактирование всегда открывается во всплывающее окно, даже при указание
protected bool $editInModal = false;

Steps To Reproduce

Создать любой ресурс вывести в него например

HasMany::make('КСГ', 'clinicUseKsg', new ClinicUseKsgResource())
    ->hideOnIndex()
    ->resourceMode(),

Ошибки формата JSON

Добрый день.
Заметил ошибки при работе с Leeto\MoonShine\Fields\Json
Json::make('Параметры', 'params')->keyValue('Характиристика', 'Значение')
После сохранения выводит 1 поле, key = 0, value = весь json массив строкой, в место развернутого списка.
Json::make('Параметры', 'params')->fields([Text::make('Заголовок', 'name'), Text::make('Значение', 'value')])->removable()
Ошибка при сохранении Array to string conversion

"params": [
        {
            "name": "par1",
            "value": "C25"
        },
        {
            "name": "par2",
            "value": "160"
        }
    ]

Empty dropdown in itemAction

MoonShine Version

1.52.4

Laravel Version

9.52.5

PHP Version

8.2.4

Database Driver & Version

MariaDB 10 - Docker

Description

В методе itemActions ресурса, если метод canSee возвращает false, то при отображении inDropdown контейнер с экшенами пустой.
image

Steps To Reproduce

image

Конфликт параметров

MoonShine Version

1.53.3

Laravel Version

9.37.0

PHP Version

8.2.4

Database Driver & Version

mysql 8.0.21

Description

Конфликт параметров по умолчанию с именами ресурса.
изображение
Для локального исправления можно добавить в ресурс

    protected string $routAlias = 'new_alias';

Сама проблема происходит в файле vendor/moonshine/moonshine/src/Traits/Resource/ResourceRouter.php
в методе route при выполнении блока array_merge([$this->routeParam() => $id], $query) поскольку в $query присутствует параметр page

Steps To Reproduce

  1. Добавляем ресурс
php artisan moonshine:resource Page
  1. Добавляем записи, что бы появилась пагинация
  2. Переходим на страницу пагинации, что бы в адресной строке был параметр page=*
  3. Все ссылки в колонке экшен имеют ID страницы с параметра

Проблема с полем SwitchBoolean

Если у поля поставить свойство ->autoUpdate(false), то в таблице всеравно можно будет переключить переключатель, но в базу данных данные не сохранятся - что вводит в заблуждение пользователя очень сильно)

Не работает кнопка Поиск

На странице ресурса при нажатии на кнопку поиска ничего не происходит.
По Enter поиск работает.
"version": "1.6.2",

Дублирование запросов в базу данных

Добрый день. Заметил странное поведение при выборке из базы данных. Админ панель дублирует запросы 3 раза, на всех разделах меню.
Скриншот
https://ibb.co/F402x0v
Должно быть 4 запроса в БД, а не 8..
При добавлении тестовой ValueMetric в место 1 запроса в БД идет 5 запросов

($id) must be of type ?int, string given

У eloquent модели установлен тип для primary_key - string (уникальный символьный код).
При создании ресурса для этой модели, в методе fields возвращается массив, в котором есть:
ID::make()

Как в ресурсе указать, что модель имеет primary_key типа string?

Неверная модель

При выполнении команды
php artisan moonshine:resource Post --model=App\Models\Post
в созданном ресурсе удаляются обратные слеши:
public static string $model = 'AppModelsCoin';

OS: Ubuntu 22.04

Добавить событиe для Field afterSave

Добавить возможность в Leeto\MoonShine\Fields\Field метод afterSave(), наподобие:

public function afterSave(Model $item): Model
{
// .......
return $item;
}

где можно было бы выполнить действия с введенными данными или моделью.

MorphMany

Не работает кнопка добавить, если редактируется ресурс с уже заполненым полем, пока не удалить заполненный элемент
изображение

Визуальный баг с отображением Select в Ajax

MoonShine Version

1.59

Laravel Version

10.10

PHP Version

8.1.9

Database Driver & Version

No response

Description

Если запихнуть select в ajax, при открытие списка он скрывается за блоком ajax, из-за чего выбрать опцию становится не очень удобно.

image
image

Steps To Reproduce

Block::make('Товары', [
      Json::make(
          'Товары',
          'products'
      )
          ->fields([
              Select::make(
                  'Название товара',
                  'name',
              )
                  ->options([...много опций])
                  ->searchable()
                  ->required(),
          ]),
  ]),

Ошибка при создании администратора

Развернул админ панель по документации, при создании администратора через консоль, всё ок, при попытке добавить ещё одного администратора через админ панель выбивает ошибку:

SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type bigint: "" CONTEXT: unnamed portal parameter $2 = ''

Все поля, которые требуются для добавления администратора, заполнены корректно, новых не добавлялось.

image

Баг с экспортом ссылок

MoonShine Version

1.60.2

Laravel Version

10.14.1

PHP Version

8.2

Database Driver & Version

No response

Description

При экспорте, если в списке есть ссылка, то в экспорт она попадает вместе svg иконкой https://disk.yandex.ru/d/41lQBlzy1ABi8w

Steps To Reproduce

Создать любое поле типа URL и экспортировать его

Ошибка при добавлении Checkbox::make

Call to protected method Leeto\MoonShine\Fields\Field::isGroup() from scope Illuminate\Filesystem\Filesystem

при создании блока в ресурсе админки и добавлении чекбокса вылетает крит ошибка
Block::make('form', [
ID::make()->sortable(),
Checkbox::make('Активный', 'active'),
]),

redirect to previous on login page

MoonShine Version

1.52.0

Laravel Version

9.19

PHP Version

8.0.2

Database Driver & Version

No response

Description

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

Steps To Reproduce

Просто залогиниться

Проверка подтверждения пароля в rules

MoonShine Version

1.53.0

Laravel Version

10.7.1

PHP Version

8.1.10

Database Driver & Version

No response

Description

Ресурс UserResource пропускает с любым несоответствием подтверждения пароля.

public function fields(): array
	{
		return [
		    ID::make()->sortable(),
            Text::make('Имя', 'name')->required(),
            Email::make('Email', 'email')->required() ,
            Password::make('Пароль', 'password')->hideOnIndex()->hideOnDetail()->hideOnUpdate(),  
            PasswordRepeat::make('Повторите пароль', 'password_confirmation')->hideOnIndex()->hideOnDetail()->hideOnUpdate(),              
        ];
	}
	public function rules(Model $item): array
	{
	    return ['email' => 'unique:users,email,'.$item->id,
                'password' => 'min:8',
                'password_confirmation' => 'required',
        ];
    }

Steps To Reproduce

Laravel Moonshine

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.