Magento 2 Backend Development II - On Demand Training
- Courses included: 5
- Total video time: 12 hours
- Access period: 1Y
- € 259 for 1 year
- € 21 per hour of video available to you
Price | €259.00 |
---|---|
Access period | 1 year |
Included courses
Magento 2 Backend Development II
Status: Complete
Last updated: 2024-09-17
Number of lessons: 102
Number of slides: 412
Videos: 10.2 hours
Magento 2 GraphQL Development
Status: Complete
Last updated: 2024-07-03
Number of lessons: 21
Number of slides: 84
Videos: 2.2 hours
Magento 2 Migration
Status: Complete
Last updated: 2024-05-23
Number of lessons: 0
Number of slides: 0
Videos: 0 hours
Magento 2 Testing
Status: Complete
Last updated: 2024-10-07
Number of lessons: 127
Number of slides: 431
Videos: 0 hours
Preview this course
Want to see what this course is like? Checkout our Courseware Demo to preview this course and others.
Course content
Magento 2 Backend Development II
- Database models
- Declarative schemas (basics)
- Data models
- Resource models
- Collections
- Naming model classes
- AbstractModel or AbstractExtensibleModel?
- Example data model via CLI commands
- Example data model with integration tests
- Improving your models
- Improving your resource models
- Assignment: Create an author entity
- Assignment: Create a CLI for your author entity
- Events and observers
- Event observer
- Finding events
- Dispatching events
- Observer or Plugins
- Controllers and routing
- Routing overview
- Assignment: Create a frontend page to view authors
- Backend routes
- Override a controller action
- Logic of the FrontController class
- Routers
- How 404 pages work
- How the SecurityTxt module works
- Creating a custom router
- Assignment: Create a custom router for your Author entity
- Quiz: Routers
- CMS parts
- CMS Blocks
- CMS pages
- CMS widgets
- Widgets
- Assignment: Create a custom widget for your Author entity
- Adding a custom page type
- CSP
- Content Security Policy
- Toggling CSP mode
- Example of CSP with external CSS
- Whitelisting values for CSP
- Example with whitelisting external CSS
- CSP in the Yireo GoogleTagManager module
- Dummy `$secureRenderer`
- Whitelisting inline JavaScript in the checkout
- CspNonceProviders
- Disabling CSP
- Useful CSP extensions
- Filesystem
- Using the filesystem
- Reading files
- Assignment: Create a CLI command to output a file
- Writing files
- Repositories
- Repositories
- Sorting lists with repositories
- Using filters with repositories
- Debugging SELECT queries with repositories
- Using filter groups with repositories
- The bad side of repositories
- Creating your own repository
- Adding CLI classes for the repository
- Integration tests for our custom repository
- Assignment: Create a custom repository for your author entity
- Custom helper classes for your repositories
- Class patterns
- Data objects
- Builder pattern
- No more Helpers
- Database operations
- Declarative schemas (advanced)
- DB schema patches
- Adding `startSetup` and `endSetup`
- Manual SQL queries
- Future changes in database layer
- EAV operations
- EAV attributes
- Creating an EAV entity
- Attributes
- About attributes
- Attribute models
- Working with the configuration
- Attribute sets
- Category attributes
- Extension attributes
- Extension Attributes
- Example product extension attribute
- Adminhtml
- Backend routes
- Adding Store Configuration settings
- ACL rules
- Adding a menu to the Admin Panel
- Basics of adding UiComponents
- Extending a UiComponent grid
- Creating a UIComponent grid
- Hyva Admin
- Custom backend theme
- Indexing
- Indexing overview
- Where to look for indexing
- How indexing works
- Tuning indexing
- Creating a custom indexerer
- Backend of the checkout
- ConfigProviders for `window.checkoutConfig`
- Layout processors
- Adding a new Layout Processor
- The Vault
- Multi Source Inventory
- Multi Source Inventory overview
- Reservations
- Source Selection Algorithms (SSA)
- Configuring MSI
- Simplest setup of MSI
- Coding samples with MSI
- Database tables for MSI
- The old Stock Registry
- REST API
- Web APIs
Magento 2 GraphQL Development
- GraphQL basics
- Introduction to GraphQL
- GraphQL clients
- GraphQL queries
- Assignment: Make some queries
- GraphQL mutations
- Assignment: Login via GraphQL and review your addressbook
- GraphQL call types
- GraphQL fragments
- GraphQL directives
- GraphQL schema discovery and introspection
- Magento GraphQL API
- Introducing Magento GraphQL
- Adding a new endpoint
- Extending the product schemas
- Extending the GraphQL storeConfig endpoint
- Working with context
- Resolvers
- Testing GraphQL
- URL Resolving
- GraphQL caching
- Exception handling
- Tips & tricks
Magento 2 Migration
Magento 2 Testing
- Testing overview
- Why testing?
- Testing strategies
- Testing tools
- Test Driven Development (TDD)
- TDD is dead
- System Under Test (SUT)
- Types of testing
- Magento tests
- Organizing your tests
- Make it a habit
- PHPUnit
- PHPUnit overview
- PHPUnit installation
- PHPUnit configuration file
- Assignment: Setup a custom `phpunit.xml`
- PHPUnit bootstrap
- Breaking changes in PHPUnit
- PHPUnit 10 upgrade
- Setup PhpStorm
- Setup PHPUnit
- Run PHPUnit with Docker
- Create Run Configuration
- Running tests from PhpStorm
- Rerun automatically
- Rerun failed tests
- Debug tests with Xdebug
- Unit tests
- Structure of a unit test class
- TDD example
- Using `dev/tests/unit/phpunit.xml.dist`
- Simple example unit test
- Coding katas
- Testing a Config-class
- Mocking classes
- Stubs vs mocks vs dummies
- Using the ObjectManager in unit tests
- Testing exceptions
- Data providers in tests
- setUp & tearDown
- Adding messages to the output
- Spying with PHPUnit
- Marking tests
- Yireo Test Generator
- Mocking functions
- Good practices for tests
- Code coverage
- Integration Tests
- Overview of Integration Tests
- Setting up integration tests
- Running Integration Tests
- TESTS_CLEANUP
- Resetting the Integration Tests environment
- First integration test
- Which ObjectManager?
- Testing a Config-class
- Mocking vs ObjectManager in integration tests
- Magento annotations & attributes
- Config fixtures
- Data fixtures
- Tips for integration tests
- Yireo Test Generator
- Running tests with Xdebug enabled
- Integration testing performance
- Performance overview
- ReachDigital Integration Testing Framework
- Add Redis server
- 04-dummy-elasticsearch
- MySQL tuning
- Composer replacements
- Yireo Integration Test Helper
- Minimizing modules that are enabled
- Parallel test runs
- Using tmpfs to speed up Integration Tests
- `yireo/magento-integration-tests-docker-composer`
- Integration Test scenarios
- Testing module behaviour
- First test
- Generating tests
- Checking for configuration values
- Testing console commands
- Testing controllers
- Testing the layout independently
- Testing sessions
- Testing entities
- Testing a schema
- Testing event observers
- Testing Magewire components
- Testing DI plugins
- ObjectManager preference overrides
- Yireo Integration Testing Helper
- Troubleshooting Integration Tests
- Could not connect to the Amqp Server
- Base table or view not found
- Cannot open file
- Connection refused
- The default website isn't defined. Set the website and try again
- Unable to retrieve deployment version
- Issue with `ifconfig` in XML layout
- `tasklist.exe not found`
- The value of autoloader is specified, but file doesn't exist
- Cannot instantiate interface Magento\Framework\Config\CacheInterface
- Code quality
- About code quality
- Defensive programming
- Object Calisthenics
- SOLID
- Law of Demeter
- Other principles
- Static code analysis
- Refactoring legacy code
- What is legacy code?
- Refactoring with tests
- Strangler fig pattern
- Characterization tests
- Functional Tests with PHPUnit
- Overview of Functional Tests
- Functional tests setup
- Validate products
- Customer VAT validation
- API Functional Testing
- Custom REST test
- Custom GraphQL test
- MFTF
- Magento Functional Testing Framework (MFTF)
- Static tests
- Overview of static tests
- Running tests on Magento core
- PHP CodeSniffer (PHPCS)
- Magento 2 Coding Standard
- Running PHPStan in Magento
- PHP linting
- Varnish tests
- Mutating testing
- Mutation testing
- Infection
- Test automation
- Automated testing overview
- GitHub Actions
- End-to-End testing
- End-to-End testing
- Cypress
- Miscellaneous
- Resources