diff --git a/pt/index.rst b/pt/index.rst index 5e0e698d97..d1becd7138 100644 --- a/pt/index.rst +++ b/pt/index.rst @@ -1,15 +1,14 @@ Bem-vindo ######### -O CakePHP 4 é um framework de desenvolvimento web que funciona com o PHP 8.0 -(pelo menos |minphpversion|). Leia a seção :doc:`CakePHP num piscar de olhos ` -para ter uma ideia geral dos fundamentos do CakePHP. +O CakePHP 5 é um framework de desenvolvimento web executado em PHP |phpversion| (min. PHP +|minphpversion|). Leia :doc:`CakePHP num piscar de olhos ` para obter uma +introdução aos fundamentos do CakePHP. -O *cookbook* (guia de receitas) do CakePHP é um projeto de documentação -editável e aberto à comunidade. Observe o botão com um ícone de um lápis -no canto direito, ele vai direcioná-lo para o editor online do GitHub -referente a página atual, permitindo que você facilmente contribua com -quaisquer adições, exclusões ou correções para a documentação. +O livro CakePHP é um projeto de documentação aberto e editável pela comunidade. +Observe o botão com o ícone de lápis fixado na parede direita; ele +direcionará você para o editor online do GitHub da página ativa, permitindo que você +contribua com quaisquer adições, exclusões ou correções à documentação. .. container:: offline-download @@ -33,25 +32,19 @@ Se você está com dificuldades, existem vários lugares onde Primeiros passos ================ -Aprender um novo framework pode ser intimidador e excitante ao mesmo tempo. Para -ajudar você nesse processo, nós criamos um *cookbook* recheado de exemplos e -receitas que remetem tarefas rotineiras. Se você está iniciando, deveria começar -com o :doc:`/quickstart` que vai lhe proporcionar um panorama geral sobre o que -o CakePHP tem a oferecer e seu funcionamento. +Aprender um novo framework pode ser intimidador e empolgante ao mesmo tempo. Para +ajudá-lo, criamos um livro de receitas repleto de exemplos e receitas para +concluir as tarefas comuns. Se você é iniciante, comece com o +:doc:`/quickstart`, pois ele lhe dará um rápido tour pelo que +o CakePHP tem a oferecer e como funciona. -Após concluir o Guia de Início Rápido, você pode se aprofundar sobre os -principais elementos existentes em uma aplicação construída com o CakePHP: +Após concluir o tutorial de Início Rápido, você pode revisar os principais elementos de um aplicativo CakePHP: * O :ref:`ciclo de requisição do CakePHP ` -* As :doc:`convenções ` que o CakePHP - utiliza. -* :doc:`Controllers ` lidam com requisições e coordenam seus - *models* com as respostas que sua aplicação gera. -* :doc:`Views ` são a camada de apresentação da sua aplicação. Elas - te oferecem poderosas ferramentas para criar HTML, JSON e as outras saídas - que sua aplicação precisa. -* :doc:`Models ` são o ingrediente principal em qualquer aplicação. Eles - lidam com a validação e a lógica de domínio em sua aplicação. +* As :doc:`convenções ` que o CakePHP utiliza. +* :doc:`Controllers ` lidar com requisições e coordenar seus *modelos* com as respostas que sua aplicação gera. +* :doc:`Views ` são a camada de apresentação da sua aplicação. Elas te oferecem ferramentas poderosas para criar HTML, JSON e outras saídas que sua aplicação precisa. +* :doc:`Modelos ` são o ingrediente principal em qualquer aplicação. Eles lidam com a validação e a lógica de domínio em sua aplicação. .. meta:: :title lang=pt: .. CakePHP book arquivo mestre de documentação, criado por diff --git a/pt/intro.rst b/pt/intro.rst index b894958557..8c3f924543 100644 --- a/pt/intro.rst +++ b/pt/intro.rst @@ -1,14 +1,14 @@ CakePHP num piscar de olhos ########################### -O CakePHP é desenvolvido para tornar tarefas rotineiras do desenvolvimento web -mais simples e fáceis. Ao fornecer uma caixa de ferramentas completa para você -começar, as várias partes do CakePHP funcionam bem juntas ou separadamente. +O CakePHP foi projetado para simplificar e facilitar tarefas comuns de desenvolvimento web. +Ao fornecer um conjunto de ferramentas completo para você começar, as diversas partes do +CakePHP funcionam bem juntas ou separadamente. O objetivo desta apresentação é introduzir os conceitos gerais presentes no CakePHP e lhe dar uma rápida visão geral de como esses conceitos são implementados. Se -você está ansioso para começar um projeto, você pode :doc:`começar com o tutorial -`, ou +você está ansioso para começar um projeto, você pode +:doc:`começar com o tutorial `, ou :doc:`mergulhar na documentação`. Convenções Sobre Configuração @@ -36,12 +36,11 @@ objetos de modelo podem ser pensados como "Friend", "User", "Comment", ou "Photo". Se nós quiséssemos carregar alguns dados da nossa tabela ``users`` poderíamos fazer:: - use Cake\ORM\TableRegistry; + use Cake\ORM\Locator\LocatorAwareTrait; - // Prior to 3.6 use TableRegistry::get('Users') - $users = TableRegistry::getTableLocator()->get('Users'); - $query = $users->find(); - foreach ($query as $row) { + $users = $this->fetchTable('Users'); + $resultset = $users->find()->all(); + foreach ($resultset as $row) { echo $row->username; } @@ -52,10 +51,9 @@ utilizar classes padrão para tabelas e entidades que ainda não foram definidas Se nós quiséssemos criar um usuário e salvá-lo (com validação) faríamos algo assim:: - use Cake\ORM\TableRegistry; + use Cake\ORM\Locator\LocatorAwareTrait; - // Prior to 3.6 use TableRegistry::get('Users') - $users = TableRegistry::getTableLocator()->get('Users'); + $users = $this->fetchTable('Users'); $user = $users->newEntity(['email' => 'mark@example.com']); $users->save($user); @@ -71,10 +69,10 @@ Por exemplo, a view pode usar dados da model para renderizar uma página HTML qu os contenha, ou um resultado formatado como XML:: // No arquivo view, nós renderizaremos um 'element' para cada usuário. - -
- element('user', ['user' => $user]) ?> -
+ +
  • + element('user_info', ['user' => $user]) ?> +
  • A camada View fornece vários pontos de extensão, como :ref:`view-templates`, :ref:`view-elements` @@ -102,7 +100,7 @@ camada View. Um exemplo de controller para registro de usuário seria:: public function add() { - $user = $this->Users->newEntity(); + $user = $this->Users->newEmptyEntity(); if ($this->request->is('post')) { $user = $this->Users->patchEntity($user, $this->request->getData()); if ($this->Users->save($user, ['validate' => 'registration'])) { @@ -158,12 +156,12 @@ Alguns outros grandes recursos do CakePHP são: * :doc:`Framework de cache ` que integra com Memcached, Redis e outros backends. -* Poderosas :doc:`ferramentas de geração de código ` para você começar imediatamente. +* Poderosas :doc:`ferramentas de geração de código ` para você começar imediatamente. * :doc:`Framework de teste integrado ` para você assegurar-se que seu código funciona perfeitamente. Os próximos passos óbvios são :doc:`baixar o CakePHP ` e ler o -:doc:`tutorial e construir algo fantástico `. +:doc:`tutorial e construir algo fantástico `. Leitura Adicional ================= diff --git a/pt/intro/conventions.rst b/pt/intro/conventions.rst index 72c82e4dee..1aed04f31c 100644 --- a/pt/intro/conventions.rst +++ b/pt/intro/conventions.rst @@ -13,35 +13,28 @@ Convenções para Controllers =========================== Os nomes das classes de Controllers são pluralizados, CamelCased, e terminam em -``Controller``. ``PeopleController`` e -``LatestArticlesController`` são exemplos de nomes convencionais para +``Controller``. ``UsersController`` e +``MenuLinksController`` são exemplos de nomes convencionais para controllers. -Métodos públicos nos Controllers são frequentemente referenciados como 'actions' -acessíveis através de um navegador web. Por exemplo, o ``/articles/view`` mapeia -para o método ``view()`` do ``ArticlesController`` sem nenhum esforço. Métodos -privados ou protegidos não podem ser acessados pelo roteamento. +Métodos públicos em Controllers são frequentemente referenciados como "actions" +acessíveis através de um navegador web. Eles são baseados em camelBacked. Por exemplo, +o ``/users/view-me`` mapeia para o ``viewMe()`` do ``UsersController`` sem nenhum esforço +(se usarmos a inflexão tracejada padrão no roteamento). Métodos protegidos ou privados +não podem ser acessados ​com roteamento. Considerações de URL para nomes de Controller ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Como você acabou de ver, controllers singulares mapeiam facilmente um -caminho simples, todo em minúsculo. Por exemplo, ``ApplesController`` (o qual -deveria ser definido no arquivo de nome 'ApplesController.php') é acessado -por http://example.com/apples. +caminho simples, todo em minúsculo. Por exemplo, ``UsersController`` (o qual +deveria ser definido no arquivo de nome 'UsersController.php') é acessado +por http://example.com/users. -Controllers com múltiplas palavras *podem* estar em qualquer forma 'flexionada' -igual ao nome do controller, então: - -* /redApples -* /RedApples -* /Red\_apples -* /red\_apples - -Todos resolverão para o index do controller RedApples. Porém, -a forma correta é que suas URLs sejam minúsculas e separadas por sublinhado, -portanto /red\_apples/go\_pick é a forma correta de acessar a action -``RedApplesController::go_pick``. +Embora você possa rotear vários controllers da maneira que desejar, +a convenção é que suas URLs sejam minúsculas e tracejadas usando a +classe ``DashedRoute``, portanto, ``/menu-links/view-all`` é a forma +correta de acessar a ação ``MenuLinksController::viewAll()``. Quando você cria links usando ``this->Html->link()``, você pode usar as seguintes convenções para a array de url:: @@ -61,88 +54,203 @@ veja :ref:`routes-configuration`. Convenções para nomes de Classes e seus nomes de arquivos ========================================================= -No geral, nomes de arquivos correspondem aos nomes das classes, e seguem os -padrões PSR-0 ou PSR-4 para auto-carregamento. A seguir seguem exemplos de +No geral, nomes de arquivos correspondem aos nomes das classes, e seguem o +padrão PSR-4 para auto-carregamento. A seguir seguem exemplos de nomes de classes e de seus arquivos: -- A classe de Controller **KissesAndHugsController** deveria ser encontrada - em um arquivo nomeado **KissesAndHugsController.php** -- A classe de Component **MyHandyComponent** deveria ser encontrada +- A classe de Controller ``LatestArticlesController`` deveria ser encontrada + em um arquivo nomeado **LatestArticlesController.php** +- A classe de Component ``MyHandyComponent`` deveria ser encontrada em um arquivo nomeado **MyHandyComponent.php** -- A classe de Table **OptionValuesTable** deveria ser encontrada +- A classe de Table ``OptionValuesTable`` deveria ser encontrada em um arquivo nomeado **OptionValuesTable.php**. -- A classe de Entity **OptionValue** deveria ser encontrada +- A classe de Entity ``OptionValue`` deveria ser encontrada em um arquivo nomeado **OptionValue.php**. -- A classe de Behavior **EspeciallyFunkableBehavior** deveria ser encontrada +- A classe de Behavior ``EspeciallyFunkableBehavior`` deveria ser encontrada em um arquivo nomeado **EspeciallyFunkableBehavior.php** -- A classe de View **SuperSimpleView** deveria ser encontrada +- A classe de View ``SuperSimpleView`` deveria ser encontrada em um arquivo nomeado **SuperSimpleView.php** -- A classe de Helper **BestEverHelper** deveria ser encontrada +- A classe de Helper ``BestEverHelper`` deveria ser encontrada em um arquivo nomeado **BestEverHelper.php** Cada arquivo deveria estar localizado no diretório/namespace apropriado de sua aplicação. -Convenções para Models e Databases -================================== +Convenções para Banco de Dados +============================== -Os nomes de classe de Tables são pluralizadas e CamelCased. People, BigPeople, -and ReallyBigPeople são todos exemplos convencionais de models. +Nomes de tabelas correspondentes aos modelos do CakePHP são plurais e sublinhados. Por +exemplo, ``users``, ``menu_links`` e ``user_favorite_pages`` +respectivamente. Nomes de tabelas que contenham múltiplas palavras devem +pluralizar apenas a última palavra, por exemplo, ``menu_links``. -Os nomes de Tables correspondentes aos models do CakePHP são pluralizadas e -separadas por sublinhado. As tables sublinhadas para os models mencionados acima -seriam ``people``, ``big_people``, e ``really_big_people``, -respectivamente. +Nomes de colunas com duas ou mais palavras são sublinhados, por exemplo, ``first_name``. + +Chaves estrangeiras em relacionamentos hasMany e belongsTo/hasOne são reconhecidas por +padrão como o nome (singular) da tabela relacionada seguido por ``_id``. Portanto, se +Users hasMany Articles, a tabela ``articles`` se referirá à tabela ``users`` +por meio de uma chave estrangeira ``user_id``. Para uma tabela como ``menu_links`` +cujo nome contém várias palavras, a chave estrangeira seria ``menu_link_id``. + +Tabelas Join (ou "junção") são usadas em relacionamentos BelongsToMany entre +modelos. Elas devem receber os nomes das tabelas que conectam. Os nomes devem ser +pluralizados e classificados em ordem alfabética: ``articles_tags``, não ``tags_articles`` +ou ``article_tags``. *O comando bake não funcionará se esta convenção não for +seguida.* Se a tabela de junção contiver quaisquer dados além das chaves estrangeiras +de ligação, você deverá criar uma classe de entidade/tabela concreta para a tabela. + +Além de usar um inteiro autoincrementável como chaves primárias, você também pode +usar colunas UUID. O CakePHP criará valores UUID automaticamente usando +(:php:meth:`Cake\\Utility\\Text::uuid()`) sempre que você salvar novos registros usando +o método ``Table::save()``. -Você pode utilizar a biblioteca utility :php:class:`Cake\\Utility\\Inflector` -para checar o singular/plural de palavras. Veja o -:doc:`/core-libraries/inflector` para mais informações. Recomenda-se que -as tables sejam criadas e mantidas na língua inglesa. +Convenções para Models +====================== -Campos com duas ou mais palavras são separados por sublinhado: first\_name. +Os nomes de classes de tabela são plurais, CamelCased e terminam em ``Table``. ``UsersTable``, +``MenuLinksTable`` e ``UserFavoritePagesTable`` são todos exemplos de +nomes de classes de tabela que correspondem às tabelas ``users``, ``menu_links`` e +``user_favorite_pages``, respectivamente. -Chaves estrangeiras nos relacionamentos hasMany, belongsTo ou hasOne são -reconhecidas por padrão como o nome (singular) da table relacionada seguida por -\_id. Então se Bakers hasMany Cakes, a table cakes irá referenciar-se para a -table bakers através da chave estrangeira baker\_id. Para uma tabela como -category\_types a qual o nome contém mais palavras, a chave estrangeira seria a -category\_type\_id. +Os nomes das classes de entidade são escritos no singular com CamelCased e não possuem sufixo. ``User``, +``MenuLink`` e ``UserFavoritePage`` são exemplos de nomes de entidade +que correspondem às tabelas ``users``, ``menu_links`` e ``user_favorite_pages``, +respectivamente. + +Os nomes de classes Enum devem usar a convenção ``{Entity}{Column}``, e os casos de enum +devem usar nomes CamelCased. -tables de união, usadas no relacionamento BelongsToMany entre models, devem ser -nomeadas depois das tables que ela está unindo, ordenadas em ordem alfabética -(apples\_zebras ao invés de zebras\_apples). Convenções para Views ===================== -Arquivos de template views são nomeadas seguindo as funções -que a exibem do controller, separadas por sublinhado. A função -getReady() da classe PeopleController buscará por um template view em -**templates/People/get\_ready.php**. O padrão é -**templates/Controller/underscored\_function\_name.php**. - -Por nomear as partes de sua aplicação utilizando as convenções do CakePHP, -você ganha funcionalidades sem luta e sem amarras de configuração. -Aqui está um exemplo final que enlaça as convenções juntas: - -- Table: "people" -- Classe Table: "PeopleTable", encontrada em - **src/Model/Table/PeopleTable.php** -- Classe Entity: "Person", encontrada em **src/Model/Entity/Person.php** -- Classe Controller: "PeopleController", encontrada em - **src/Controller/PeopleController.php** -- View template, encontrado em **templates/People/index.php** - -Utilizando estas convenções, o CakePHP sabe que uma requisição para -http://example.com/people/ mapeia para uma chamada da função ``index()`` -do PeopleController, onde o model Person é automaticamente disponbilizado -(e automaticamente amarrado à table 'people' no banco de dados), e então -renderiza-se um arquivo view template. Nenhuma destes relacionamentos -foi configurado de qualquer forma se não por criar classes e arquivos -que você precisaria criar de qualquer forma. +Os arquivos template de Views são nomeados de acordo com as funções do controller que exibem, +em formato sublinhado. A função ``viewAll()`` da classe ``ArticlesController`` +procurará um modelo de visualização em **templates/Articles/view_all.php**. + +O padrão básico é +**templates/Controller/underscored_function_name.php**. + +.. note:: + + Por padrão, o CakePHP usa flexões em inglês. Se você tiver tabelas/colunas de banco de dados + que usam outro idioma, precisará adicionar regras de flexão + (do singular para o plural e vice-versa). Você pode usar + :php:class:`Cake\\Utility\\Inflector` para definir suas regras de flexão + personalizadas. Consulte a documentação sobre :doc:`/core-libraries/inflector` para mais + informações. + +Convenções para Plugins +======================= + +É útil prefixar um plugin do CakePHP com "cakephp-" no nome do pacote. +Isso torna o nome semanticamente relacionado ao framework do qual depende. + +**Não** use o namespace CakePHP (cakephp) como nome do vendor, pois este é +reservado para plugins de propriedade do CakePHP. A convenção é usar letras minúsculas +e hífens como separadores:: + + // Ruim + cakephp/foo-bar + + // Bom + your-name/cakephp-foo-bar + +Veja a `incrível lista de recomendações +`__ +para mais detalhes. + +Resumo +====== + +Ao nomear as partes da sua aplicação usando as convenções do CakePHP, você ganha +funcionalidade sem os problemas e as dificuldades de manutenção da configuração. +Aqui está um exemplo final que une as convenções: + +- Database table: "articles", "menu_links" +- Table class: ``ArticlesTable``, encontrado em **src/Model/Table/ArticlesTable.php** +- Entity class: ``Article``, encontrado em **src/Model/Entity/Article.php** +- Controller class: ``ArticlesController``, encontrado em + **src/Controller/ArticlesController.php** +- View template, encontrado em **templates/Articles/index.php** + +Usando essas convenções, o CakePHP sabe que uma requisição para +``http://example.com/articles`` mapeia para uma chamada ao método ``index()`` do +``ArticlesController``, onde o modelo ``Articles`` está automaticamente disponível. +Nenhum desses relacionamentos foi configurado por qualquer outro meio além +da criação de classes e arquivos que você precisaria criar de qualquer maneira. + ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Exemplo | articles | menu_links | | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Database | articles | menu_links | Os nomes das tabelas correspondentes aos | +| Table | | | modelos CakePHP são plurais e sublinhados. | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| File | ArticlesController.php | MenuLinksController.php | | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Table | ArticlesTable.php | MenuLinksTable.php | Os nomes das classes de tabela são plurais, | +| | | | CamelCased e terminam em Table | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Entity | Article.php | MenuLink.php | Os nomes das classes de entidade são singulares, | +| | | | CamelCased: Article e MenuLink | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Class | ArticlesController | MenuLinksController | | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Controller | ArticlesController | MenuLinksController | Plural, CamelCased, termina em Controller | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Templates | Articles/index.php | MenuLinks/index.php | Os arquivos de modelo de view são nomeados de | +| | Articles/add.php | MenuLinks/add.php | acordo com as funções do controller que eles | +| | Articles/get_list.php | MenuLinks/get_list.php | exibem, em formato sublinhado | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Behavior | ArticlesBehavior.php | MenuLinksBehavior.php | | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| View | ArticlesView.php | MenuLinksView.php | | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Helper | ArticlesHelper.php | MenuLinksHelper.php | | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Component | ArticlesComponent.php | MenuLinksComponent.php | | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Plugin | Ruim: cakephp/articles | cakephp/menu-links | É útil prefixar um plugin do CakePHP com "cakephp-" | +| | Bom: you/cakephp-articles | you/cakephp-menu-links | no nome do pacote. Não use o namespace CakePHP | +| | | | (cakephp) como nome do fornecedor, pois este é | +| | | | reservado para plugins de propriedade do CakePHP. | +| | | | A convenção é usar letras minúsculas e hífens como | +| | | | separadores. | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ +| Cada arquivo estará localizado no diretório/namespace apropriado na pasta do seu aplicativo. | ++------------+-----------------------------+-------------------------+------------------------------------------------------+ + +Resumo da Convenção de Banco de Dados +===================================== ++-----------------+--------------------------------------------------------------+ +| Foreign keys | Os relacionamentos são reconhecidos por padrão com o | +| | nome (singular) da tabela relacionada seguido por ``_id``. | +| hasMany | Usuários com muitos artigos, a tabela ``articles`` | +| belongsTo/ | se referirá à tabela ``users`` | +| hasOne | por meio de uma foreign key ``user_id``. | +| BelongsToMany | | +| | | ++-----------------+--------------------------------------------------------------+ +| Multiple Words | ``menu_links`` cujo nome contém várias palavras, | +| | a foreign key seria ``menu_link_id``. | ++-----------------+--------------------------------------------------------------+ +| Auto Increment | Além de usar um inteiro autoincrementável como | +| | chaves primárias, você também pode usar colunas UUID. | +| | O CakePHP criará valores UUID automaticamente | +| | usando (:php:meth:`Cake\\Utility\\Text::uuid()`) | +| | sempre que você salvar novos registros usando o método | +| | ``Table::save()``. | ++-----------------+--------------------------------------------------------------+ +| Join tables | Devem ser nomeados de acordo com as tabelas do modelo que | +| | serão unidas ou o comando bake não funcionará, organizados | +| | em ordem alfabética | +| | (``articles_tags`` em vez de ``tags_articles``). | +| | Para colunas adicionais na tabela de junção, você deve criar | +| | uma classe de entidade/tabela separada para essa tabela. | ++-----------------+--------------------------------------------------------------+ Agora que você foi introduzido aos fundamentos do CakePHP, você pode tentar -seguir através do :doc:`/tutorials-and-examples/blog/blog` para ver como +seguir através do :doc:`/tutorials-and-examples/cms/installation` para ver como as coisas se encaixam juntas. .. meta:: diff --git a/pt/intro/where-to-get-help.rst b/pt/intro/where-to-get-help.rst index e75e9e36b1..61457633d5 100644 --- a/pt/intro/where-to-get-help.rst +++ b/pt/intro/where-to-get-help.rst @@ -52,29 +52,32 @@ e utilização de dados referentes a uma classe.:: tests/TestCase/ -O canal de IRC -============== - -**Canal de IRC na irc.freenode.net:** - -- `#cakephp `_ -- - Discussão geral -- `#cakephp-docs `_ -- - Documentação -- `#cakephp-bakery `_ -- - Bakery -- `#cakephp-fr `_ -- - Canal francês. - -Se você está travado, nos faça uma visita no canal de IRC do CakePHP. -Alguém do `time de desenvolvimento `_ -normalmente está conectado, especiamente nos horários diurnos da América do Sul -e América do Norte. Nós apreciaríamos ouví-lo se você precisar de ajuda, -se quiser encontrar usuários da sua área ou ainda se quiser doar seu novo carro -esporte. +Slack +===== + +`CakePHP Slack Support Channel `_ + +Se você estiver em dúvida, entre em contato conosco no canal de suporte do CakePHP no Slack. +Adoraríamos ouvir sua opinião, seja se precisar de ajuda, quiser +encontrar usuários na sua região ou se quiser doar seu carro esportivo novinho em folha. + +Discord +======= + +`CakePHP Discord `_ + +Você também pode se juntar a nós no Discord. .. _cakephp-official-communities: +Fórum Oficial do CakePHP +======================== +`Fórum Oficial do CakePHP `_ + +Nosso fórum oficial, onde você pode pedir ajuda, sugerir ideias e conversar +sobre o CakePHP. É o lugar perfeito para encontrar respostas rapidamente e ajudar outras pessoas. +Junte-se à família CakePHP inscrevendo-se. + Stackoverflow ============= @@ -86,9 +89,42 @@ utilizando para permitir que usuários do stackoverflow achem suas questões. Onde conseguir ajuda em sua língua ================================== +Dinamarquês +----------- + +- `Canal do Slack do CakePHP Dinamarquesa `_ + Francês ------- -- `Comunidade CakePHP francesa `_ + +- `Comunidade CakePHP Francesa `_ + +Alemão +------ + +- `Canal do Slack do CakePHP Alemã `_ +- `Grupo alemão do CakePHP no Facebook `_ + +Holandês +-------- + +- `Canal do Slack do CakePHP Holandesa `_ + +Japonês +------- + +- `Canal do Slack do CakePHP Japonesa `_ +- `Grupo Japonês do CakePHP no Facebook `_ + +Português +--------- + +- `Canal do Slack do CakePHP Portuguesa `_ + +Espanhol +-------- + +- `Canal do Slack do CakePHP Espanhola `_ .. meta:: :title lang=pt: Onde conseguir ajuda