`"}]},{"id":"24f0d081-9766-4fb0-9106-f58b5221e67e","title":"Qual a finalidade do attribute `On` dentro de um componente Livewire?","options":[{"id":"39b4db3d-99c1-41d2-b659-f9406647b3db","title":"Vincular propriedades públicas a eventos globais emitidos por outros componentes Livewire"},{"id":"31d34a92-6486-4083-a2d8-a5840db30b5d","title":"Ouvir eventos emitidos por outros componentes, executando métodos específicos quando esses eventos forem disparados"},{"id":"3ac65ca6-f8aa-4eee-b779-87c66562a4d3","title":"Monitorar alterações nas variáveis de estado internas do componente e acionar métodos reativos"},{"id":"602172b5-0a8c-4766-87b8-e157f1b7e8ef","title":"Executar métodos do componente automaticamente durante o ciclo de renderização, com base em eventos do sistema"}]},{"id":"e7992290-dd9b-42a0-ac92-8decc425f357","title":"Como podemos executar comandos JavaScript pelo back-end?","options":[{"id":"3d135070-a767-476b-ae9b-11ba03a7f118","title":"`$this→js('')`"},{"id":"6baa3e97-2ba9-48f0-be60-cb39c6f2699d","title":"`$this->emit('executeJs')`"},{"id":"25fff5ad-fa16-43dc-8f63-22fdad9ad4f3","title":"`$this->dispatchBrowserEvent('runJs')`"},{"id":"36511389-6917-415b-8864-397951500d36","title":"`$this->callJsFunction('')`"}]},{"id":"5d829be1-89a8-44f9-9c05-adc4e6d5d42a","title":"Qual é o nome do pacote npm mais conhecido para criar efeitos visuais de confetes em aplicações web?","options":[{"id":"7d28d683-e924-4cb1-bac8-d13d55ae8668","title":"`party-pop`"},{"id":"ea0f447b-fa45-4538-b8bd-e9286d0a21c4","title":"`celebrate-js`"},{"id":"ef2c0c6a-4b25-419d-a12e-7691f18633b1","title":"`confettify`"},{"id":"4846efc1-d312-4339-ad9c-dc8cabf868d3","title":"`confetti-js`"}]},{"id":"f82a5eba-9010-4102-ac50-16f6adb7f22c","title":"Qual a finalidade do `Stream` dentro do Livewire?","options":[{"id":"ab06e661-0e19-4823-9029-b496cce88e45","title":"Enviar dados em tempo real para múltiplos componentes simultaneamente"},{"id":"5bc93022-fa58-451f-b08a-2d3c1eb4e08b","title":"Atualizar variáveis no front-end de forma incremental, sem recarregar toda a view"},{"id":"dc3625f5-9526-4d1c-b742-d7f487667aa1","title":"Sincronizar variáveis entre back-end e front-end automaticamente"},{"id":"2bd05a63-b7bf-4d5d-9f6a-823cea846c85","title":"Gerenciar conexões WebSocket dentro do componente Livewire"}]}]}},"route":"/jornada/php/sala/livewire/grupo/experiencia-do-usuario/desafio/quiz-experiencia-do-usuario","metadata":{"journey_id":"36e10285-f378-48e7-a727-21c30799afed","journey_title":"PHP","type":"cluster","is_expert_content":false,"node_id":"117d6845-8697-4121-88a4-d3b80795fbf4","node_title":"Livewire","node_slug":"livewire","roadmap_slug":null,"cluster_id":"49be82e1-a6b8-4d6e-9bf2-e8d1d1784b05","cluster_title":"Livewire","cluster_slug":"livewire","cluster_thumbnail_url":null,"lesson_group_id":"584d1831-d6a2-4769-ae74-3a35bf8586cb","group_slug":"experiencia-do-usuario","group_title":"Experiência do usuário","lesson_id":"fc264f36-19b3-45b8-87f4-e5ea45eb1da9","lesson_slug":"quiz-experiencia-do-usuario","lesson_title":"Quiz - Experiência do usuário"},"lessonGroup":{"id":"584d1831-d6a2-4769-ae74-3a35bf8586cb","slug":"experiencia-do-usuario","title":"Experiência do usuário"}}]},{"id":"f454bc96-7527-4db3-8971-cbe029e53ad5","slug":"extras-e-aprimoramentos","title":"Extras e aprimoramentos","lessons":[{"id":"427e2d78-7f0a-4779-94c5-f19dcbaccf48","slug":"instalando-pest","type":"VIDEO","title":"Instalando Pest","lessonJourneyId":"3d6af629-d341-404d-bae0-4f1be99505fc","description":"🔗 [Commit: Instalando Pest](https://github.com/rocketseat-education/php-raffle/tree/3c1ab088eba56b9ab8c2d587fabe09720a13e829)\n\nNesta aula, vamos explorar como testar componentes LiveWire. Começamos criando testes em um projeto, organizando tudo em uma estrutura de pastas que facilita a localização. Abordaremos a validação de formulários, o uso de dispatch, carregamento de rotas e autorização. Também veremos como testar propriedades computadas e eventos, como o toggle show. Utilizaremos o Pest para facilitar os testes e faremos a instalação e configuração necessárias. Prepare-se para colocar a mão na massa!","content":null,"duration":295,"isFree":false,"isLoggedOutWatchable":false,"hasTranscription":true,"tags":[],"video":{"jupiterVideoId":"ea3d82ef-fef9-4276-b25c-ff3803da3b04","platform":"nivo"},"route":"/jornada/php/sala/livewire/grupo/extras-e-aprimoramentos/aula/instalando-pest","metadata":{"journey_id":"36e10285-f378-48e7-a727-21c30799afed","journey_title":"PHP","type":"cluster","is_expert_content":false,"node_id":"117d6845-8697-4121-88a4-d3b80795fbf4","node_title":"Livewire","node_slug":"livewire","roadmap_slug":null,"cluster_id":"49be82e1-a6b8-4d6e-9bf2-e8d1d1784b05","cluster_title":"Livewire","cluster_slug":"livewire","cluster_thumbnail_url":null,"lesson_group_id":"f454bc96-7527-4db3-8971-cbe029e53ad5","group_slug":"extras-e-aprimoramentos","group_title":"Extras e aprimoramentos","lesson_id":"5c697a41-bddc-4fcf-a62b-eb9668ef9a49","lesson_slug":"instalando-pest","lesson_title":"Instalando Pest"},"lessonGroup":{"id":"f454bc96-7527-4db3-8971-cbe029e53ad5","slug":"extras-e-aprimoramentos","title":"Extras e aprimoramentos"}},{"id":"f64dd95a-2ab9-4def-85c5-776ad7b1bc6a","slug":"primeiro-teste-de-componente-livewire","type":"VIDEO","title":"Primeiro teste de componente Livewire","lessonJourneyId":"02337721-6768-481b-9982-8d3fac91f2ea","description":"🔗 [Commit: Primeiro teste de componente Livewire](https://github.com/rocketseat-education/php-raffle/tree/32e9451cb6f40cdd656839c908983866ebaac1c1)\n\nNa aula de hoje, discutimos como criar um sorteio e a importância de realizar testes para garantir que tudo funcione corretamente. Utilizamos a classe Livewire para invocar componentes e testá-los de maneira eficiente. Mostrei como manipular propriedades e chamar métodos, além de realizar asserções no banco de dados para verificar se o sorteio foi criado. Encerramos com uma introdução à validação, que será abordada na próxima aula. Fiquem ligados!","content":null,"duration":188,"isFree":false,"isLoggedOutWatchable":false,"hasTranscription":true,"tags":[],"video":{"jupiterVideoId":"91b81c09-db09-4a29-ad4e-3df491e94825","platform":"nivo"},"route":"/jornada/php/sala/livewire/grupo/extras-e-aprimoramentos/aula/primeiro-teste-de-componente-livewire","metadata":{"journey_id":"36e10285-f378-48e7-a727-21c30799afed","journey_title":"PHP","type":"cluster","is_expert_content":false,"node_id":"117d6845-8697-4121-88a4-d3b80795fbf4","node_title":"Livewire","node_slug":"livewire","roadmap_slug":null,"cluster_id":"49be82e1-a6b8-4d6e-9bf2-e8d1d1784b05","cluster_title":"Livewire","cluster_slug":"livewire","cluster_thumbnail_url":null,"lesson_group_id":"f454bc96-7527-4db3-8971-cbe029e53ad5","group_slug":"extras-e-aprimoramentos","group_title":"Extras e aprimoramentos","lesson_id":"cc3e771d-1e60-45bd-84cd-caace41ca232","lesson_slug":"primeiro-teste-de-componente-livewire","lesson_title":"Primeiro teste de componente Livewire"},"lessonGroup":{"id":"f454bc96-7527-4db3-8971-cbe029e53ad5","slug":"extras-e-aprimoramentos","title":"Extras e aprimoramentos"}},{"id":"5e910996-e5d4-48a2-9b84-025f2e8bceee","slug":"testando-validacao-de-componente","type":"VIDEO","title":"Testando validação de componente","lessonJourneyId":"abc25a25-dd34-4eb4-9a94-b4a75f20c84c","description":"🔗 [Commit: Testando validação de componente](https://github.com/rocketseat-education/php-raffle/tree/32e9451cb6f40cdd656839c908983866ebaac1c1)\n\nNesta aula, exploramos como realizar validações em um componente usando LiveWire. Abordamos a obrigatoriedade, o mínimo e máximo de caracteres, e a unicidade dos campos. Demonstrei como criar testes para cada uma dessas validações, utilizando métodos do LiveWire para verificar erros. Também discutimos a importância de testar o comportamento do formulário após o envio, garantindo que os estados sejam restaurados corretamente. Na próxima aula, vamos focar em testar propriedades computadas.","content":null,"duration":376,"isFree":false,"isLoggedOutWatchable":false,"hasTranscription":true,"tags":[],"video":{"jupiterVideoId":"bb319a60-cb48-49e9-aca6-cf18bcf0873a","platform":"nivo"},"route":"/jornada/php/sala/livewire/grupo/extras-e-aprimoramentos/aula/testando-validacao-de-componente","metadata":{"journey_id":"36e10285-f378-48e7-a727-21c30799afed","journey_title":"PHP","type":"cluster","is_expert_content":false,"node_id":"117d6845-8697-4121-88a4-d3b80795fbf4","node_title":"Livewire","node_slug":"livewire","roadmap_slug":null,"cluster_id":"49be82e1-a6b8-4d6e-9bf2-e8d1d1784b05","cluster_title":"Livewire","cluster_slug":"livewire","cluster_thumbnail_url":null,"lesson_group_id":"f454bc96-7527-4db3-8971-cbe029e53ad5","group_slug":"extras-e-aprimoramentos","group_title":"Extras e aprimoramentos","lesson_id":"9e2990a8-c001-4622-b90a-50cb23ce6975","lesson_slug":"testando-validacao-de-componente","lesson_title":"Testando validação de componente"},"lessonGroup":{"id":"f454bc96-7527-4db3-8971-cbe029e53ad5","slug":"extras-e-aprimoramentos","title":"Extras e aprimoramentos"}},{"id":"47916e7b-22ee-4fc4-968e-d0007f7c2433","slug":"teste-de-computed-properties","type":"VIDEO","title":"Teste de computed properties","lessonJourneyId":"07d8e549-5b8a-467d-abd2-c6ed1153a753","description":"🔗 [Commit: Teste de computed properties](https://github.com/rocketseat-education/php-raffle/tree/bd5743f220ca7a6f4411babf3d8e3ec6023c2e5e)\n\nNesta aula, vamos desenvolver um novo componente para exibir os ganhadores de um sorteio. Começamos criando um teste que deve trazer todos os vencedores, o que nos leva a configurar um sorteio e verificar se tudo está funcionando corretamente. Abordamos a inicialização do sorteio e a manipulação de aplicantes, além de como rodar testes rapidamente no VS Code usando a extensão BetterPast. Por fim, validamos a quantidade de ganhadores e preparamos o terreno para a próxima aula, onde exploraremos o streaming.","content":null,"duration":540,"isFree":false,"isLoggedOutWatchable":false,"hasTranscription":true,"tags":[],"video":{"jupiterVideoId":"1104f8bb-ee6e-42aa-8215-980eb3d9bc01","platform":"nivo"},"route":"/jornada/php/sala/livewire/grupo/extras-e-aprimoramentos/aula/teste-de-computed-properties","metadata":{"journey_id":"36e10285-f378-48e7-a727-21c30799afed","journey_title":"PHP","type":"cluster","is_expert_content":false,"node_id":"117d6845-8697-4121-88a4-d3b80795fbf4","node_title":"Livewire","node_slug":"livewire","roadmap_slug":null,"cluster_id":"49be82e1-a6b8-4d6e-9bf2-e8d1d1784b05","cluster_title":"Livewire","cluster_slug":"livewire","cluster_thumbnail_url":null,"lesson_group_id":"f454bc96-7527-4db3-8971-cbe029e53ad5","group_slug":"extras-e-aprimoramentos","group_title":"Extras e aprimoramentos","lesson_id":"595efb22-6f3f-4fef-a901-bd1d1c69e6ce","lesson_slug":"teste-de-computed-properties","lesson_title":"Teste de computed properties"},"lessonGroup":{"id":"f454bc96-7527-4db3-8971-cbe029e53ad5","slug":"extras-e-aprimoramentos","title":"Extras e aprimoramentos"}},{"id":"cb77a31a-f429-44e1-8da9-ad8c3c54ed5f","slug":"conclusao-final","type":"VIDEO","title":"Conclusão final","lessonJourneyId":"b6c506d4-f146-4519-972c-6b33a2b6ca72","description":"Finalizamos o curso de LiveWire! Espero que você tenha curtido e compreendido como essa ferramenta pode facilitar e acelerar o desenvolvimento da sua aplicação. Com LiveWire, você aproveita todo o potencial do ecossistema Laravel, utilizando o Blade para o front-end e fazendo apenas pequenos ajustes em JavaScript, se necessário. Valeu e até a próxima!","content":null,"duration":38,"isFree":false,"isLoggedOutWatchable":false,"hasTranscription":true,"tags":[],"video":{"jupiterVideoId":"7b9450de-0a2f-4581-9811-6da2a1ac9a16","platform":"nivo"},"route":"/jornada/php/sala/livewire/grupo/extras-e-aprimoramentos/aula/conclusao-final","metadata":{"journey_id":"36e10285-f378-48e7-a727-21c30799afed","journey_title":"PHP","type":"cluster","is_expert_content":false,"node_id":"117d6845-8697-4121-88a4-d3b80795fbf4","node_title":"Livewire","node_slug":"livewire","roadmap_slug":null,"cluster_id":"49be82e1-a6b8-4d6e-9bf2-e8d1d1784b05","cluster_title":"Livewire","cluster_slug":"livewire","cluster_thumbnail_url":null,"lesson_group_id":"f454bc96-7527-4db3-8971-cbe029e53ad5","group_slug":"extras-e-aprimoramentos","group_title":"Extras e aprimoramentos","lesson_id":"14ec7417-0935-4a36-8479-1716d13ff0e8","lesson_slug":"conclusao-final","lesson_title":"Conclusão final"},"lessonGroup":{"id":"f454bc96-7527-4db3-8971-cbe029e53ad5","slug":"extras-e-aprimoramentos","title":"Extras e aprimoramentos"}},{"id":"71286e1d-5beb-4af1-843a-ee5d1ce79483","slug":"quiz-extras-e-aprimoramentos","type":"QUIZ","title":"Quiz - Extras e aprimoramentos","lessonJourneyId":"122bf8a1-4776-4fd5-b6fc-8b6601637690","description":"","content":null,"duration":0,"isFree":false,"isLoggedOutWatchable":false,"hasTranscription":false,"tags":[],"quiz":{"id":"ab2ae6f5-f03d-48c3-b74a-4b1fde08d04e","slug":"quiz-formacao-php-extras-e-aprimoramentos","title":"Quiz Formação PHP - Extras e aprimoramentos","form":{"id":"9979467d-6ca5-413d-9935-fb6b02e29228","timeSpentInMinutes":8,"questions":[{"id":"17eec03b-eed7-4d55-86b0-9e1d04826604","title":"O que são os *tests* do Laravel?","options":[{"id":"d474999c-cf89-4ceb-a54d-6a548f46fc6f","title":"Conjunto de estilos prontos para aplicar temas personalizados em páginas do Laravel"},{"id":"ae4bb056-44cd-4265-9ebd-9e42e622e8b6","title":"Conjunto de ferramentas usadas para testar automaticamente se a aplicação funciona como esperado"},{"id":"354075c3-9dcc-47a4-8b77-014f5a3b5b9d","title":"Sistema interno do Laravel responsável por armazenar sessões de usuários logados"},{"id":"2d345ce9-9906-4317-8f41-81fc4b4ca433","title":"Grupo de arquivos usados para configurar os erros exibidos ao usuário final"}]},{"id":"25861b4c-b72b-4ef7-a841-ea594cc61546","title":"Qual o comando utilizado para criar *tests* no Laravel?","options":[{"id":"0abc157f-af2a-47ec-bdc5-1dfc5ad48890","title":"`php artisan test:run NomeDoTeste`"},{"id":"a4637620-b152-4dd0-95ec-e6a69c9fec0c","title":"`php artisan config:test NomeDoTeste`"},{"id":"a7636a76-31a9-454e-a4b8-1ca7e8266ad4","title":"`php artisan generate:test NomeDoTeste`"},{"id":"885d49c1-d69f-4151-8241-080f155d9be8","title":"`php artisan make:test NomeDoTeste`"}]},{"id":"53788b8c-6e83-4418-9a0f-740da406189e","title":"Qual o comando para rodar os *tests* no Laravel?","options":[{"id":"1a00e98d-5f78-4d2b-96d7-c258d86c5b39","title":"`php artisan test`"},{"id":"b0af86a2-4e45-43e1-a4dd-3608ab70fc8f","title":"`php artisan run:test`"},{"id":"22c8eecb-7fc2-4fca-8e63-065d7ca2c095","title":"`php artisan serve:test`"},{"id":"f5b4f61a-d51e-4bdc-bf3e-855febd8a8df","title":"`php artisan execute:tests`"}]},{"id":"a772e7a3-25cc-4050-9be6-c1e69a1bedfa","title":"O que é o Pest no contexto do Laravel?","options":[{"id":"f5130473-380e-4b2a-abdb-c144f9463da1","title":"Um sistema de controle de dependências usado para gerenciar pacotes PHP no Laravel"},{"id":"c82869fc-978d-43e5-91e6-dff983236c19","title":"Uma biblioteca de autenticação utilizada para proteger rotas e recursos da aplicação"},{"id":"d3d1d934-b13e-40fc-a7c8-7074e159baab","title":"Um framework de testes com sintaxe simples e elegante, compatível com Laravel"},{"id":"c14ccd4d-06c4-4920-a208-2efb1adb46e3","title":"Um módulo de segurança usado para prevenir ataques XSS e CSRF no Laravel"}]},{"id":"eadeb703-da45-4f74-a12c-dbba6f697308","title":"Qual dos comandos abaixo representa um teste de validação?","options":[{"id":"8d9b9923-f47e-403f-9c34-fb123d763437","title":"Letra A\n\n```php\n\ntest('name should have at least 5 characters', function() {\n\n\t Livewire::test(Create::class)\n\t\t\t->set('name', 'Test')\n\t\t\t->call('handle')\n\t\t\t->assertHasErrors(['name' => 'min']);\n\t\t\t\n});\n```"},{"id":"d897079b-b261-4aae-85de-e9966d0777c0","title":"Letra B\n\n```php\ntest('valid name submission', function() {\n\n\tLivewire::test(Create::class)\n\t\t->set('name', 'TestingName')\n\t\t->call('handle')\n\t\t->assertHasNoErrors();\n\t\t\n});\n```"},{"id":"141383ab-ea37-404d-9386-208f95506f8d","title":"Letra C\n\n```php\ntest('name field renders', function() {\n\n\tLivewire::test(Create::class)\n\t\t->assertSee('Name');\n\n});\n```"},{"id":"90f3f823-6df4-49a6-a621-158af549dda6","title":"Letra D\n\n```php\ntest('component mounts successfully', function() {\n\n\tLivewire::test(Create::class)\n\t\t->assertStatus(200);\n\n});\n```"}]}]}},"route":"/jornada/php/sala/livewire/grupo/extras-e-aprimoramentos/desafio/quiz-extras-e-aprimoramentos","metadata":{"journey_id":"36e10285-f378-48e7-a727-21c30799afed","journey_title":"PHP","type":"cluster","is_expert_content":false,"node_id":"117d6845-8697-4121-88a4-d3b80795fbf4","node_title":"Livewire","node_slug":"livewire","roadmap_slug":null,"cluster_id":"49be82e1-a6b8-4d6e-9bf2-e8d1d1784b05","cluster_title":"Livewire","cluster_slug":"livewire","cluster_thumbnail_url":null,"lesson_group_id":"f454bc96-7527-4db3-8971-cbe029e53ad5","group_slug":"extras-e-aprimoramentos","group_title":"Extras e aprimoramentos","lesson_id":"885d75ea-e385-4d33-b898-80da28bc1362","lesson_slug":"quiz-extras-e-aprimoramentos","lesson_title":"Quiz - Extras e aprimoramentos"},"lessonGroup":{"id":"f454bc96-7527-4db3-8971-cbe029e53ad5","slug":"extras-e-aprimoramentos","title":"Extras e aprimoramentos"}}]}],"journeyNode":{"id":"117d6845-8697-4121-88a4-d3b80795fbf4","slug":"livewire","title":"Componentes dinâmicos com o Livewire","description":"Livewire é um poderoso framework para Laravel que permite criar interfaces dinâmicas e reativas sem sair do PHP. Neste módulo, você vai aprender a usar Livewire na prática construindo um sistema completo de sorteios: com formulários interativos, atualizações em tempo real, autenticação, área administrativa, animações com Alpine.js, sorteio aleatório de participantes e exibição pública do ganhador.","isFreemium":false,"isBonus":false,"releaseAt":"2025-05-30T03:00:00.000Z"},"journey":{"id":"36e10285-f378-48e7-a727-21c30799afed","slug":"php","title":"PHP","iconUrl":"https://xesque.rocketseat.dev/platform/1760965676186.svg","isFree":false,"freeUntil":null,"isEntryCourse":false,"isCertificable":true,"certificate":{},"contentType":"SPECIALIZATION","hasAfterAccess":false,"shouldRedirectToInternalPage":false,"plutoOfferSlug":"formacao-em-php","parentJourney":null},"forum":{"slug":"php"}},"dataUpdateCount":0,"dataUpdatedAt":1789759274003,"error":null,"errorUpdateCount":0,"errorUpdatedAt":0,"fetchFailureCount":0,"fetchFailureReason":null,"fetchMeta":null,"isInvalidated":false,"status":"success","fetchStatus":"idle"},"queryKey":["GetJourneyLessonByNodeSlug",{"nodeSlug":"livewire"}],"queryHash":"[\"GetJourneyLessonByNodeSlug\",{\"nodeSlug\":\"livewire\"}]"}]});Certificado | Rocketseat