Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
Toda aplicação Symfony consiste de uma coleção de bundles que adicionam ferramentas úteis
(serviços) ao seu projeto. Cada bundle pode ser personalizado
através de arquivos de configuração que residem - por padrão - no diretório app/config
.
O arquivo de configuração principal é chamado config.yml
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # app/config/config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
framework:
secret: '%secret%'
router: { resource: '%kernel.root_dir%/config/routing.yml' }
# ...
# Twig Configuration
twig:
debug: '%kernel.debug%'
strict_variables: '%kernel.debug%'
# ...
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xmlns:twig="http://symfony.com/schema/dic/twig"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
http://symfony.com/schema/dic/symfony/symfony-1.0.xsd
http://symfony.com/schema/dic/twig
http://symfony.com/schema/dic/twig/twig-1.0.xsd">
<imports>
<import resource="parameters.yml" />
<import resource="security.yml" />
<import resource="services.yml" />
</imports>
<framework:config secret="%secret%">
<framework:router resource="%kernel.root_dir%/config/routing.xml" />
<!-- ... -->
</framework:config>
<!-- Twig Configuration -->
<twig:config debug="%kernel.debug%" strict-variables="%kernel.debug%" />
<!-- ... -->
</container>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // app/config/config.php
$this->import('parameters.yml');
$this->import('security.yml');
$this->import('services.yml');
$container->loadFromExtension('framework', array(
'secret' => '%secret%',
'router' => array(
'resource' => '%kernel.root_dir%/config/routing.php',
),
// ...
));
// Twig Configuration
$container->loadFromExtension('twig', array(
'debug' => '%kernel.debug%',
'strict_variables' => '%kernel.debug%',
));
// ...
|
A maioria das teclas de nível superior - como `` e `` framework`` twig`` - são de configuração para um
pacote específico (ou seja, FrameworkBundle
e TwigBundle
).
Há duas formas de saber quais chaves você pode configurar:
config:dump-reference
.Por exemplo, se você deseja configurar algo no Twig, você pode ver um exemplo através do dump de todas as opções de configuração disponíveis, executando:
1 | $ php bin/console config:dump-reference twig
|
O arquivo principal de configuração do symfony é app/config/config.yml
. Mas, para organização,
ele também carrega outros arquivos de configuração através de sua chave imports
:
1 2 3 4 5 6 | # app/config/config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
# ...
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xmlns:twig="http://symfony.com/schema/dic/twig"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
http://symfony.com/schema/dic/symfony/symfony-1.0.xsd
http://symfony.com/schema/dic/twig
http://symfony.com/schema/dic/twig/twig-1.0.xsd">
<imports>
<import resource="parameters.yml" />
<import resource="security.yml" />
<import resource="services.yml" />
</imports>
<!-- ... -->
</container>
|
1 2 3 4 5 6 | // app/config/config.php
$this->import('parameters.yml');
$this->import('security.yml');
$this->import('services.yml');
// ...
|
A chave imports
se parece muito com a função include()
do PHP: os conteúdos de
parameters.yml
, security.yml
e services.yml
são lidos e carregados. Também
é possível carregar arquivos XML ou PHP.
Outra chave especial é chamada `` parameters``: é usada para definir variáveis que
podem ser referenciadas em qualquer outro arquivo de configuração. Por exemplo, em config.yml
,
um parâmetro locale
é definido e, então, referenciado logo abaixo sob a chave
`` framework``:
1 2 3 4 5 6 7 8 9 10 11 12 13 | # app/config/config.yml
# ...
parameters:
locale: en
framework:
# ...
# any string surrounded by two % is replaced by that parameter value
default_locale: "%locale%"
# ...
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:framework="http://symfony.com/schema/dic/symfony"
xmlns:twig="http://symfony.com/schema/dic/twig"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/symfony
http://symfony.com/schema/dic/symfony/symfony-1.0.xsd
http://symfony.com/schema/dic/twig
http://symfony.com/schema/dic/twig/twig-1.0.xsd">
<!-- ... -->
<parameters>
<parameter key="locale">en</parameter>
</parameters>
<framework:config default-locale="%locale%">
<!-- ... -->
</framework:config>
<!-- ... -->
</container>
|
1 2 3 4 5 6 7 8 9 10 11 | // app/config/config.php
// ...
$container->setParameter('locale', 'en');
$container->loadFromExtension('framework', array(
'default_locale' => '%locale%',
// ...
));
// ...
|
Você pode definir quaisquer nomes de parâmetros que desejar sob a chave parameters
de
qualquer arquivo de configuração. Para fazer referência a um parâmetro, envolva seu nome com dois
sinais de porcentagem - por exemplo, %locale%
.
See also
Você também pode definir os parâmetros de forma dinâmica, como a partir de variáveis de ambiente. Veja Como definir Parâmetros Externos no Container de Serviços.
Para mais informações sobre parâmetros - incluindo como referênciá-los dentro de um controlador - veja service-container-parameters.
Superficialmente, parameters.yml
é como qualquer outro arquivo de configuração: ele
é importado por config.yml
e define vários parâmetros:
1 2 3 4 | parameters:
# ...
database_user: root
database_password: ~
|
Não surpreendentemente, esses são referenciados dentro de config.yml
e ajudam a
configurar o DoctrineBundle e outras partes do Symfony:
1 2 3 4 5 6 7 | # app/config/config.yml
doctrine:
dbal:
driver: pdo_mysql
# ...
user: '%database_user%'
password: '%database_password%'
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <!-- app/config/config.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:doctrine="http://symfony.com/schema/dic/doctrine"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/doctrine
http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
<doctrine:config>
<doctrine:dbal
driver="pdo_mysql"
user="%database_user%"
password="%database_password%" />
</doctrine:config>
</container>
|
1 2 3 4 5 6 7 8 9 10 | // app/config/config.php
$configuration->loadFromExtension('doctrine', array(
'dbal' => array(
'driver' => 'pdo_mysql',
// ...
'user' => '%database_user%',
'password' => '%database_password%',
),
));
|
Mas o arquivo parameters.yml
é especial: ele define os valores que normalmente são
alterados em cada servidor. Por exemplo, as credenciais de banco de dados em sua máquina de
desenvolvimento local pode ser diferente das de seus colegas de trabalho. É por isso que esse arquivo
não está comprometido com o repositório compartilhado e só é armazenado em sua máquina.
Por causa disso, ** parameters.yml não está comprometido com o controle de versão **. De fato, o `` .gitignore`` arquivo que vem com Symfony impede que seja cometido.
No entanto, um arquivo `` parameters.yml.dist`` * é * comprometidos (com valores fictícios). Este ficheiro não é lido por Symfony: é apenas uma referência para que Symfony sabe quais parâmetros precisa ser definido no arquivo `` parameters.yml``. Se você adicionar ou remover chaves para `` Parameters.yml``, adicionar ou removê-los de `` parameters.yml.dist`` também, então ambos arquivos estão sempre em sincronia.
Você tem apenas uma aplicação, porém, caso tenha percebido ou não, ela precisa comportar-se diferentemente em determinados momentos:
Como você pode fazer uma aplicação comportar-se de duas maneiras diferentes? Com ambientes.
Você provavelmente já está utilizando o ambiente dev
, mesmo sem conhecê-lo.
Depois de implantar, você vai usar o ambiente prod
.
Para saber mais sobre como executar e controlar cada ambiente, consulte Como Dominar e Criar novos Ambientes.
Parabéns! Você abordou o básico no Symfony. Em seguida, aprenda sobre cada parte do Symfony individualmente, seguindo os guias. Verifique:
E muitos outros tópicos.