vincentchalamon / nav-bundle
Symfony bundle for Microsoft Dynamics NAV
Fund package maintenance!
vincentchalamon
Installs: 698
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 1
Open Issues: 2
Type:symfony-bundle
Requires
- php: >=7.2
- ext-curl: *
- ext-dom: *
- ext-soap: *
- doctrine/annotations: ^1.7
- doctrine/collections: ^1.2
- doctrine/persistence: ^1.3
- jamesiarmes/php-ntlm: ^1.0
- ocramius/proxy-manager: ^2.2
- symfony/config: ^4.4 || ^5.1
- symfony/event-dispatcher-contracts: ^1.0 || ^2.0
- symfony/http-kernel: ^4.4.13 || ^5.1.5
- symfony/property-access: ^4.4 || ^5.1
- symfony/property-info: ^4.4 || ^5.1
- symfony/serializer: ^4.4 || ^5.1
- symfony/stopwatch: ^4.4 || ^5.1
Requires (Dev)
- ext-simplexml: *
- api-platform/core: ^2.5.2 || ^2.5-dev
- behat/behat: ^3.1
- behatch/contexts: ^3.3
- easycorp/easyadmin-bundle: ^2.3
- fig/link-util: ^1.1
- friends-of-behat/mink: ^1.8
- friends-of-behat/mink-browserkit-driver: ^1.4
- friends-of-behat/mink-extension: ^2.4
- friends-of-behat/symfony-extension: ^2.1.0
- nyholm/symfony-bundle-test: ^1.6.1
- pagerfanta/pagerfanta: ^2.0
- phpspec/prophecy: ^1.12
- phpstan/phpstan: ^0.12.9
- sensio/framework-extra-bundle: ^5.0
- symfony/asset: ^4.4 || ^5.1
- symfony/console: ^4.4 || ^5.1
- symfony/dotenv: ^4.4 || ^5.1
- symfony/phpunit-bridge: ^5.1
- symfony/twig-bundle: ^4.4 || ^5.1
- symfony/web-profiler-bundle: ^4.4 || ^5.1
- willdurand/negotiation: ^3.0-dev
- zendframework/zend-code: ^3.4
Suggests
- api-platform/core: Add support for API Platform
- easycorp/easyadmin-bundle: Add support for EasyAdmin
- pagerfanta/pagerfanta: Add support for Pagerfanta
- sensio/framework-extra-bundle: Add support for ParamConverter
- symfony/web-profiler-bundle: Add support for the Web profiler
This package is auto-updated.
Last update: 2021-01-21 12:20:52 UTC
README
This Symfony Bundle is used to map objects with a Microsoft Dynamics NAV service.
Requirements
- PHP ^7.3
- PHP extensions: curl, dom, soap
Installation
composer req vincentchalamon/nav-bundle
Configuration
nav: url: '%env(NAV_URL)%' # i.e.: https://user:pass@www.example.com/NAV_WS/ paths: App: path: '%kernel.project_dir%/src/Entity' namespace: 'App/Entity'
Advanced configuration
nav: enable_profiler: '%kernel.debug%' foo: wsdl: '%env(NAV_WSDL)%' connection: class: App\Connection\CustomConnectionClass username: '%env(NAV_USERNAME)%' password: '%env(NAV_PASSWORD)%' paths: Foo: path: '%kernel.project_dir%/src/Entity/Foo' namespace: 'App/Entity/Foo' entity_manager_class: App\EntityManager\CustomEntityManager driver: nav.class_metadata.driver.annotation name_converter: nav.serializer.name_converter.camel_case_to_nav soap_options: soap_version: 1 connection_timeout: 120 exception: '%kernel.debug%' trace: '%kernel.debug%' bar: wsdl: '%env(ANOTHER_WSDL)%' connection: class: App\Connection\CustomConnectionClass username: '%env(ANOTHER_USERNAME)%' password: '%env(ANOTHER_PASSWORD)%' paths: Bar: path: '%kernel.project_dir%/src/Entity/Bar' namespace: 'App/Entity/Bar' entity_manager_class: App\EntityManager\CustomEntityManager driver: app.class_metadata.custom name_converter: nav.serializer.name_converter.camel_case_to_nav soap_options: soap_version: 1 connection_timeout: 120 exception: '%kernel.debug%' trace: '%kernel.debug%'
Usage
namespace App\Entity; use NavBundle\Annotation as Nav; /** * @Nav\Entity(namespace="Contact") */ final class Contact { /** * @Nav\Column * @Nav\Key */ public $key; /** * @Nav\Column * @Nav\No */ public $no; /** * @Nav\Column(name="Custom_Email", nullable=true) */ public $email; /** * @Nav\Column(type="date", nullable=true) */ public $date; /** * @Nav\ManyToOne(targetClass=Foo::class) */ public $foo; }
Read
/** @var \NavBundle\RegistryInterface $registry */ $registry = $container->get('nav.registry'); $manager = $registry->getManagerForClass(Contact::class); $repository = $manager->getRepository(Contact::class); // Find entity by primary key $repository->find($no); // Find collection by a set of criteria $repository->findBy(['foo' => 'bar']); // Find entity by a set of criteria $repository->findOneBy(['foo' => 'bar']); // Find all $repository->findAll();
Write/delete
/** @var \NavBundle\RegistryInterface $registry */ $registry = $container->get('nav.registry'); $manager = $registry->getManagerForClass(Contact::class); // Create/Update $manager->persist($object); // Delete $manager->remove($object); // Flush $manager->flush(); // It's also possible to flush an object or an array of objects $manager->flush($object);
Profiler
Code of conduct
This bundle is ruled by a code a conduct.
Contributing
Please have a look to the contributing guide.
Backward Compatibility promise
This bundle follows the same Backward Compatibility promise as the Symfony framework: https://symfony.com/doc/current/contributing/code/bc.html