Installation:
composer require moox/data
php artisan data:install
data:install command publishes config, migrations, and assets.First Use Case:
Access static data via the Data facade:
use Moox\Data\Facades\Data;
$countries = Data::countries(); // Returns collection of country data
$languages = Data::languages(); // Returns collection of language data
Frontend Integration: Use the provided Livewire component for language switching:
<livewire:language-switch />
Data Retrieval:
// Get all countries with ISO codes
$countries = Data::countries()->pluck('iso_code', 'name');
// Get timezone data for a specific country
$timezones = Data::timezones()->where('country', 'US');
Integration with Eloquent:
use Moox\Data\Concerns\HasCountries;
class User extends Model
{
use HasCountries;
protected $countryData;
}
// Automatically loads country data for the user's country
$user->loadCountryData();
Dynamic Tabs (Admin Panel):
Enable in config/moox-data.php:
'tabs' => [
'countries' => 'Countries',
'languages' => 'Languages',
'timezones' => 'Timezones',
'currencies' => 'Currencies',
],
/data panel (if enable-panel is true).Translation Handling: Override default labels in config:
'translations' => [
'countries' => [
'name' => 'Country Name',
'iso_code' => 'ISO Code',
],
],
Localization Workflow:
Data::languages() to populate a dropdown in a form.preferred_language column.Data::translate('countries.name').Multi-Tenant Timezone Handling:
$tenantTimezone = Data::timezones()
->where('country', $tenant->country_code)
->first()
->timezone;
Currency Conversion:
$usdToEurRate = Data::currencies()
->where('code', 'USD')
->first()
->rate_to('EUR');
Panel Route Conflict:
/data panel route may conflict with existing routes.'panel_route' => 'admin/data',
Livewire Component Context:
language-switch component defaults to frontend context.context='admin' if used in backend:
<livewire:language-switch context="admin" />
Data Updates:
php artisan data:update
DataServiceProvider to fetch updates from an API if needed.Translation Overrides:
Data::macro('translate', function ($key, $locale = null) {
return trans("moox-data::{$key}", [], $locale);
});
Missing Data:
php artisan migrate:status
php artisan data:install --force
Livewire Component Errors:
moox/data is listed in composer.json under require.php artisan livewire:discover
Custom Data Sources:
DataService class to fetch data from external APIs:
namespace App\Services;
use Moox\Data\Services\DataService;
class CustomDataService extends DataService
{
public function countries()
{
return Cache::remember('custom_countries', now()->addDays(7), function () {
return Http::get('https://api.example.com/countries')->json();
});
}
}
AppServiceProvider:
$this->app->singleton(DataService::class, CustomDataService::class);
Adding New Data Types:
php artisan vendor:publish --tag="moox-data-data"
database/data/ and update the DataService to parse it.Custom Panel Views:
php artisan vendor:publish --tag="moox-data-views"
resources/views/vendor/moox-data/panel.blade.php.How can I help you explore Laravel packages today?