th3mouk / yahoo-weather-bundle
Symfony bundle that include Yahoo Weather API and archive datas in database.
Installs: 222
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^5.4|^7.0
- gedmo/doctrine-extensions: ^2.3.12
- symfony/config: ~2.3
- symfony/console: ~2.3
- symfony/dependency-injection: ~2.3
- symfony/http-kernel: ~2.3
- th3mouk/yahoo-weather-api: ^1.0@dev
- twig/twig: ^1.12
Requires (Dev)
- fabpot/php-cs-fixer: ^0.5|^1.0
- symfony/phpunit-bridge: ~2.7|~3.0
This package is auto-updated.
Last update: 2024-11-26 02:40:45 UTC
README
This Symfony bundle providing communication and historian of Yahoo Weather API.
Installation
composer require th3mouk/yahoo-weather-bundle ^1.0@dev
Add to the appKernel.php
:
// Weather Bundle new Th3Mouk\YahooWeatherBundle\Th3MoukYahooWeatherBundle(),
Full configuration of config.yml
th3mouk_yahoo_weather: templates: today: Th3MoukYahooWeatherBundle:Default:today.html.twig forecast: Th3MoukYahooWeatherBundle:Default:forecast.html.twig pictograms: helper: ImplementsYourOwn extension: Th3Mouk\YahooWeatherBundle\Twig\PictoExtension
Usage
This bundle provides two entities: Th3Mouk\YahooWeatherBundle\Entity\City
and Th3Mouk\YahooWeatherBundle\Entity\Forecast
.
The first one is relative to communication with the API, city object must have the name of the city like in the Yahoo Weather Documentation, or a WOEID code. The second is for data persistence and history retrieve.
Extends them or feel free to hack it !
Twig Extensions
Weather
You have two extensions to draw the forecasts, they use templates defined in configuration. Feel free to to implements or add your own !
{{ weather_forecast(city, unit = 'c') }} {{ weather_today(city, unit = 'c') }}
Icons
You can add a pictogram helper in the configuration that activate this extension, that must implement Th3Mouk\YahooWeatherBundle\Helper\PictogramInterface
.
{{ code|weather_pictogram }}
This is an exemple of PictogramHelper :
namespace AppBundle\Helper; use Th3Mouk\YahooWeatherBundle\Helper\PictogramInterface; class WeatherPictogramHelper implements PictogramInterface { /** * Function that retrieve the html string corresponding to a weather code. * * @param $code * * @return string|null */ public function getPictogram($code) { return "<img src='favicon.ico'/>"; } }
Sonata Integration Exemple
This bundle automatically provide an administration for cities.
The service is named th3mouk_yahoo_weather.admin.city
.
th3mouk_yahoo_weather.admin.city: class: Th3Mouk\YahooWeatherBundle\Admin\CityAdmin arguments: [~, Th3Mouk\YahooWeatherBundle\Entity\City, SonataAdminBundle:CRUD] tags: - {name: sonata.admin, manager_type: orm, group: weather, label: city}
Add the admin group on the dashboard:
sonata.admin.group.weather: label: weather label_catalogue: messages icon: '<i class="fa fa-sun-o"></i>' items: - th3mouk_yahoo_weather.admin.city roles: [ ROLE_ADMIN ]
Don't forget to add this group on a block:
sonata_admin: dashboard: blocks: - { position: left, type: sonata.admin.block.admin_list, settings: { groups: [...sonata.admin.group.weather...] }}
You're done! 👍
TODO
- Add template option on weather twig extension
- Add today forecast without city object
- Remove sonata configuration in the bundle
- Add weather extension configuration
- Add twig extension of history
- Add twig extension for comparison of weather (today and Y-1)
- Add twig extension for comparison of weather (forecast and Y-1)
Please
Feel free to improve this bundle.