https://github.com/geniusts/preferences
https://github.com/geniusts/preferences
laravel laravel-5-package laravel-package laravel5
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/geniusts/preferences
- Owner: GeniusTS
- License: mit
- Created: 2016-09-07T16:34:51.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-11-13T03:16:44.000Z (over 1 year ago)
- Last Synced: 2025-01-31T03:33:00.972Z (4 months ago)
- Topics: laravel, laravel-5-package, laravel-package, laravel5
- Language: PHP
- Size: 54.7 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# Preferences page for Laravel
This package to generate a preferences page to the application,
specially if you have many component that have a different settings
and you want to store it in the database and use it by default config
functions of laravel.- [Installation](#installation)
- [Usage](#usage)
- [License](#license)## Installation
1. ***Download the package***
* command line:`composer require geniusts/preferences`
* or add it to composer file:
```json
{
"require": {
"geniusts/preferences": "^2.0"
}
}
```
and run:
`composer update`2. ***Service Provider***
- If you are using Laravel >=5.5 and the `auto-discover` is enabled, no need to do anything.
- If your Laravel <5.5 or you disabled `auto-discover` add the ServiceProvider to the providers array in `config/app.php````php
GeniusTS\Preferences\PreferencesServiceProvider::class,
```**Note:** If you are using Laravel 5.5 or greater no need to add it, It will auto discove
3. ***Controller And Migrations***
Publish the package Controller file to your application. Run these commands:
php artisan vendor:publish --provider="GeniusTS\Preferences\PreferencesServiceProvider" --tag=controller
You can also publish views and migrations by the following commands:php artisan vendor:publish --provider="GeniusTS\Preferences\PreferencesServiceProvider" --tag=views
php artisan vendor:publish --provider="GeniusTS\Preferences\PreferencesServiceProvider" --tag=migrationsNo need to publish the migrations files just run migrate command to execute the migrations.
php artisan migrate
> If you want to use `DB` transaction while saving the data, add `protected $transactions = true;` to `SettingsController`.
4. ***Routes and views***
Add two routes to you routes file:
Route::get('/settings/{preferences_domain?}', 'SettingsController@edit')
->midllware(//Apply your middleware)
Route::patch('/settings/{preferences_domain?}/{preferences_element?}', 'SettingsController@update')
->midllware(//Apply your middleware)
Now you have to create a `preferences.settings` view with your app layout
and include the `geniusts_preferences::settings` view.@include('geniusts_preferences::settings');
## Usage
### Creating settings tab
1. ***create a view of the settings:***
Ex.: `settings/general.blade.php````html
Test
```2. ***Register the tab to PreferencesManager***
```php
use GeniusTS\Preferences\Models\Domain;
use GeniusTS\Preferences\Models\Element;
// Create a settings Domain
// Domain(string $key, View $view, string $label)
// you can use label like 'labels.general', because the view execute "trans" function
$domain = new Domain('general', view('settings.general'), 'General');
// Add the inputs names and validation rules
// Element(string $name, mixed $rules)
$domain->addElement(new Element('project_name', 'required|max:255'));
// OR for array values
$domain->addElement(new Element('options', ['options' => 'array', 'options.*' => 'required|integer']));
// register the Domain to the Preferences manager
$manager = resolve('preferences'); // or app('preferences') for versions older than 5.3
$manager->addDomain($domain);
```
> You can register the `domains` in the `boot` function of your
package service provider.### Access saved settings
Use the default `config` function or `Config` class to get the values of
your settings: `config('preferences.{domain}.{element}')````php
config('preferences.general.project_name');
```
## Migration from version 11. update inputs name inside preferences views.
Ex: You have a `general` domain that have `project_name` element, then the input name should be `general[project_name]`.2. Update declaration of `edit` and `handleSuccessResponse` methods of `SettingsController` inside your project.
```php
public function edit($domain = null) {
// Logic here
}
protected function handleSuccessResponse($domain, $element) {
// Logic here
}
```## License
This package is free software distributed under the terms of the MIT license.