I'm using the NelmioApiDocBundle (v3.0) in my symfony 4 project and I want to dump the documentation of my Api project.
I see it's possible to do with older version of NelmioApiDocBundle with this command :
php bin/console api:swagger:dump destination_folder
but I got this error :
There are no commands defined in the "api:swagger" namespace
I don't know if it's still posible to dump the documentation with the new version of NelmioApiDocBundle
Seeing NelmioApiDocBundle makes me almost sure you are using FOSRestBundle, if you are I'd change to api-platform, you make ask why? First of all you get the API doc by default on route /api (no matter what format etc you always get full doc) second of all the bundle is easy to configure even if you need some custom funcionality like access to property per operation and even depending on role more here I've tried FOSRestBundle on Symfony 5.0 but it couldnt provide with the funcionality and configuration I desired and then I found out about the API platform. In case I missed your desired answer let me know in the comment and I'll provide the answer as good as I can
Related
Is it possible to use Symfony CLI command (ex: php bin/console translation:update --force -en) to build translation if I use a constant in a translator like that:
$translator->trans(self::ANY_CONSTANT);
That doesn't work for me now... But, if I put a string on it, that's work!
I am using Symfony 5 with twig.
I am not used Symfony for long and english is my second language, so, please, be indulgent.
Thanks in advance for your answers. ;)
PS: I did many research before asking this question. I found many things about translation, but no good information about how work this CLI command.
Translator and Console are two different component of symfony. Problem doesn't come from Console, please check if your CONSTANT value is an existing translation key.
If you got an error, please put here also your error message
Is there best practice to store various config parameters like length of zip code, minimum length of the last name and so on?
I would like something like a php class with static functions and properties, which I can use at any place of my project.
Your looking for parameter service.
In just released Symfony 4.1 by default: https://symfony.com/blog/new-in-symfony-4-1-getting-container-parameters-as-a-service
In older Symfony with package like
https://github.com/Symplify/PackageBuilder/blob/master/README.md#2-all-parameters-available-in-a-service
or own implementation. It's simple :)
In the symfony best pracitces they suggest to use parameters in services.yml that changing, if you will never change this parameter put in Entity as const or in some abstract class that you can create on by yourself.
Documentation about it:
https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
For the 3.* branch, I find that the services.yml file is the best place to do so. You can then inject those values into the services that need it, or even access them in your controllers with
$this->getParameter('param_name')
More info on this: see Service Parameters
As other answers point, you can store parameters using the parameters.yml file.
But, for me, you are asking for limitations on entity properties. If you are using Doctrine, you can use annotations for this purpose like described in docs: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/annotations-reference.html
In a project built using Symfony 4, we use NelmioApiDocBundle version 3 plus Swagger annotations, which works fine.
In addition to browsing the API docs, I would like to create a static version of the documentation, to be generated in a build pipeline. (In your case, it’s Bitbucket Pipelines, but that shouldn’t make a difference.) NelmioApiDocBundle version 2 had a command for emitting documentation, but it seems version 3 no longer has. It’s easy to write a command which fetches ApiDocGenerator from the Symfony container and thus to obtain the information I want – but I can’t imagine I am the only one who wishes to do this.
Am I overlooking something? Does NelmioApiDocBundle really not have a built-in way of generating static, offline documentation?
How about, I have a problem and it is before in symfony3 was run in the console:
php bin/console doctrine:mapping:import MiBundle yml
and generated and map an entity of the database but in Symfony 4 the command in the console is always the same, but the bundles are no longer occupied in the latest version so the previous command as it is does not work anymore, Someone could help me...
likewise generate the get and set
When using the new Symfony 4 directory structure without bundles the commands for importing the mapping and creating entities from an existing schema in the DoctrineBundle will no longer work properly. There is currently an ongoing discussion whether to update them, but the Doctrine team considers those tools counterproductive. You are not meant to blindly map the schema 1:1 to your domain model.
The best advice I can give for now is to temporarily create a bundle and then move the resulting files. This is also the workaround suggested in the github-issue regarding this: https://github.com/doctrine/DoctrineBundle/issues/729
The Symfony team is moving some of those commands into their own MakeBundle, but I don't think this command is already in there. Maybe you want to follow their progress.
I have a Symfony 2 environment in which I am using a custom data type with Doctrine's MongoDB ODM mappings. This all works, except occasionally; when I go to clear the cache or install the assets I sometimes receive the following error:
[InvalidArgumentException]
Invalid type specified "..."
This seems to always happen with the next command I issue to the console after I have cleared the cache, later operations all succeed. Doctrine seems to have issues intermittently finding it, and I suspect it has to do with where I'm registering the type and when that occurs with relationship to when Doctrine processes the mappings.
The type is being added as part of the boot() method in another bundle which may not always be included.
What is happening here?
Can I somehow ensure that the type is loaded earlier, or provide it in a configuration file? As far as I can tell there is no way, at present, using the MongoDB configuration to specify custom types in a .yml file as described for the ORM here.
I found a good solution in this post.
The short answer is to add
\Doctrine\ODM\MongoDB\Mapping\Types\Type::registeredType('mytype', 'My\Type\Class');
in MyBundleClass::__consruct(). This will get the type registered before any warmup happens with the cache.
Using Type::registeredType() instead of Type::addType() will avoid checking to see if the type is already registered. In the case of Type::addType() will throw an exception if it has already been added.
To answer the second of my two questions above, I seem to have found a work-around for this, but I don't like it very much. It feels more like a hack than a proper solution.
In app/autoload.php after I register the annotation registry and driver, I call:
\Doctrine\ODM\MongoDB\Mapping\Types\Type::addType('mytype', 'My\Type\Class');
... and this appears to ensure that the type is registered when calling the console commands.