Всем привет, Есть ли в laravel 5.5 банчи ? Или что-то другое когда контрол, модели, вьюхи пишутся как одна подпрограмма с тем, чтобы можно было бы легко перенести в другое приложение? Или как-то можно еще реализовать и стоит ли? Спасибо!
Всё, что есть - описано в документации. Остальное - через дополнительные расширения, например https://nwidart.com/laravel-modules/v2/introduction позволяет похожего функционала добиться. --- Добавлено --- подпрограмма - наверное, некорректно использовать. Всё-таки подпрограмма, по определению, это процедура или функция
А это статья для какой версии ? Имею Код (Text): php artisan --version Laravel Framework 5.5.3 php artisan module:make SqlMonitor [Symfony\Component\Console\Exception\CommandNotFoundException] There are no commands defined in the "module" namespace. php artisan module:list [Symfony\Component\Console\Exception\CommandNotFoundException] There are no commands defined in the "module" namespace. Изменился формат команд или у меня что-то не установлено ?
Это не статья, это пакет. Его установить надо сначала, чтоб пользоваться --- Добавлено --- Там же есть раздел "installation and setup". прочитайте, сделайте.
Спасибо за ссылочку - понемногу разбираюсь, но я не нашел а как правильно подключить мордель таблицы ? Я создал файл Modules/SqlMonitor/SmLine.php где SqlMonitor - имя моего модуля а SmLine.php имеет заголовок : Код (Text): <?php namespace SqlMonitor; use Illuminate\Database\Eloquent\Model; use Validator; use DB; use Auth; use Carbon\Carbon; class SmLine extends Model { protected $table = 'sm_line'; protected $primaryKey = 'id'; ... И вызов модели в контроле Modules/SqlMonitor/Http/Controllers/SqlMonitorController.php : Код (Text): <?php namespace Modules\SqlMonitor\Http\Controllers; use DB; use Auth; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Routing\Controller; use SqlMonitor\SmLine; class SqlMonitorController extends Controller { protected $data_strip_tags = true; protected $clear_doubled_spaces = true; protected $stripslashes = true; /** * Display a listing of the resource. * @return Response */ public function index() { $smLineTopValueArray= SmLine::getSmLineTopValueArray(); // Ошибка Class 'SqlMonitor\SmLine' not found echo '<pre>$smLineTopValueArray::'.print_r($smLineTopValueArray,true).'</pre>'; return view('sqlmonitor::index'); } В чем ошибка и как правильно ?
По-прежнему ищу решение. В доке по ссылке я примеров не нашел - не очень понятно как вообще это делать А не подскажите есть ли какие полезные модули сделанные с использованием этого laravel-modules с моделями баз? Посмотрел бы как как примеры... google тут плохой помошник - мног всякого находит...
Ну поскольку Laravel-modules стороннее расширение, пакеты разработчики делают обычно без него. Но вашу проблему он решает на отлично. Чтобы классы грузились, надо добавить папку в конфиг автозагрузчика в composer.json основного проекта, но об этом есть в доке на первой же странице: Код (Text): "psr-4": { "App\\": "app/", "Modules\\": "Modules/" }, После этого всё прекрасно заработало
Да для этого модуля нужна как минимум 1 служебная таблица и из чего : 1) а нет ли у Laravel-modules модулей тригеров при регистрации/удаления этого модуля? Было бы полезно для создания/удаления этих таблиц. 2) А нет ли удобной альтернативы db-таблицам ? Нужно сохранять длинную строку и 1-2 поле(булево и дата). С возможностью считывания и фильтром. Поскольку модуль делается для работы с sql-запросами приложения не очень удобно что и сам он будет генерить новые sql-запросы.
У модуля есть ServiceProvider, который запускается каждый раз при загрузке модуля, можно поставить создание таблиц. Плюс у модуля могут быть свои миграции, где обычно и создаются таблицы. На удаление - нет, нету, надо руками. Если надо фильтровать, то, ИМХО, DB - лучший вариант. А так, вроде Laravel из коробки умеет работать с несколькими no-sql хранилищами. У меня такого опыта нету.
Спасибо, проясняется А еще подскажите мои js,css файлы находятся в подкаталогах Modules/SqlMonitor/Assets/js/sqlmonitor.js/ и Modules/SqlMonitor/Assets/css/app.css В Modules/SqlMonitor/Resources/views/layouts/master.blade.php : Код (Text): <link rel="stylesheet" href="{{ Module::asset('sqlmonitor:css/app.css') }}" /> ... <script src="{{ Module::asset('sqlmonitor:js/sqlmonitor.js?dt='.$dtparam) }}"></script> Чтобы их перенаправить в public я вконсоле выполнял: Код (Text): php artisan vendor:publish --provider="Modules\SqlMonitor" и получал: Код (Text): Publishing complete. но мои файлы в public не переноcятся. Как правильно ?