舉報

會員
Drupal 8 Module Development
Drupal8comeswithareleasecyclethatallowsfornewfunctionalitytobeaddedatamuchfasterpace.However,thisalsomeanscodedeprecationsandchangingarchitecturethatyouneedtostayontopof.Thisbookupdatesthefirsteditionandincludesthenewfunctionalityintroducedinversionsupto,andincluding8.7.ThebookwillfirstintroduceyoutotheDrupal8architectureanditssubsystemsbeforedivingintocreatingyourfirstmodulewithbasicfunctionality.YouwillworkwiththeDrupalloggingandmailingsystems,learnhowtooutputdatausingthethemelayerandworkwithmenusandlinksprogrammatically.Then,youwilllearnhowtoworkwithdifferentkindsofdatastorages,createcustomentities,fieldtypesandleveragetheDatabaseAPIforlowerleveldatabasequeries.YouwillfurtherseehowtointroduceJavaScriptintoyourmodule,workwiththevariousfilesystemsandensurethecodeyouwriteworksonmultilingualsites.Finally,youwilllearnhowtoprogrammaticallyworkwithViews,writeautomatedtestsforyourfunctionalityandalsowritesecurecodeingeneral.Bytheend,youwillhavelearnedhowtodevelopyourowncustommodulethatcanprovidecomplexbusinesssolutions.Andwhoknows,maybeyou’llevencontributeitbacktotheDrupalcommunity.ForewordbyDriesBuytaert,founderofDrupal.
目錄(374章)
倒序
- coverpage
- Title Page
- Copyright and Credits
- Drupal 8 Module Development Second Edition
- About Packt
- Why subscribe?
- Packt.com
- Foreword
- Contributors
- About the author
- About the reviewer
- Packt is searching for authors like you
- Preface
- Who this book is for
- What this book covers
- To get the most out of this book
- Download the example code files
- Download the color images
- Conventions used
- Get in touch
- Reviews
- Developing for Drupal 8
- Introducing Drupal (for developers)
- Developing for Drupal 8
- Technologies that drive Drupal
- PHP
- Databases and MySQL
- The web server
- HTML CSS and JavaScript
- Drupal architecture
- Drupal core modules and themes
- Hooks plugins and events
- Services and the dependency injection container
- From request to response
- Drupal's major subsystems
- Routing
- Entities
- Fields
- Menus
- Views
- Forms
- Configuration
- Plugins
- The theme system
- Caching
- Other subsystems
- Tools for developing in Drupal
- Version control
- Composer
- The API site and coding standards
- The developer (Devel) module
- Drush (the Drupal shell)
- Drupal Console
- Developer settings
- Summary
- Creating Your First Module
- Creating a module
- Your first hook implementation
- Route and controller
- The route
- Route variables
- Namespaces
- The Controller
- Services
- What is a service?
- The HelloWorldSalutation service
- Tagged services
- Using services in Drupal 8
- Injecting the service into our Controller
- Invoked Controllers
- The form
- Altering forms
- Custom submit handlers
- Rendering forms
- Service dependencies
- Blocks
- Our first block plugin
- Block configuration
- Working with links
- The URL
- The link
- Which way to link?
- Event Dispatcher and redirects
- Redirecting from a Controller
- Redirecting from a subscriber
- Dispatching events
- Summary
- Logging and Mailing
- Logging
- The Drupal 8 logging theory
- Our own logger channel
- Our own logger
- Logging for Hello World
- Logging summary
- Mail API
- The theory of the Mail API
- Implementing hook_mail()
- Sending emails
- Altering someone else's emails
- Custom mail plugins
- The mail plugin
- Using mail plugins
- Tokens
- The Token API
- Using tokens
- Defining new tokens
- Token summary
- Summary
- Theming
- Business logic versus presentation logic
- Twig
- Theme hooks
- Theme hook suggestions
- Render arrays
- The structure of a render array
- #type
- #theme
- #markup
- The render pipeline
- Assets and libraries
- Libraries
- Attaching libraries
- Common theme hooks
- Lists
- Links
- Tables
- Attributes
- Layouts
- Defining layouts
- Rendering a layout
- Theming our Hello World module
- Summary
- Menus and Menu Links
- The menu system
- Menus
- Menu links
- Multiple types of menu links
- Local tasks
- Local actions
- Contextual links
- MenuLink trees
- Menu link tree manipulators
- Menu active trail
- Rendering menus
- Working with menu links
- Defining menu links
- Working with menu links
- Defining local tasks
- Defining local actions
- Defining contextual links
- Summary
- Data Modeling and Storage
- Different types of data storage
- State API
- TempStore
- Private TempStore
- Shared TempStore
- Tempstore conclusion
- UserData
- Configuration
- Introduction
- What is configuration used for?
- Managing configuration
- Different types of configuration
- Configuration storage
- Schema
- Overrides
- Global overrides
- Module overrides
- Language overrides
- Priority
- Interacting with simple configuration
- Entities
- Content versus configuration entity types
- Entity type plugins
- Identifiers
- Bundles
- Database tables
- Entity keys
- Links
- Entity translation
- Entity revisions
- Configuration export
- Handlers
- Fields
- Configuration entity fields
- Content entity fields
- Base fields
- Configurable fields
- Field storage
- Entity types summary
- TypedData
- Why TypedData?
- What is TypedData?
- The low-level API
- DataType plugins
- Data definitions
- Content entities
- TypedData summary
- Interacting with the Entity API
- Querying entities
- Building queries
- Loading entities
- Reading entities
- Manipulating entities
- Creating entities
- Rendering content entities
- Pseudo-fields
- Entity validation
- Content entities
- Configuration entities
- Validation summary
- Summary
- Your Own Custom Entity and Plugin Types
- Custom content entity type
- Custom plugin type
- Custom configuration entity type
- The Importer plugin
- Content entity bundles
- Drush command
- Summary
- The Database API
- The Schema API
- Running queries
- Select queries
- Handling the result
- More complex select queries
- Range queries
- Pagers
- Insert queries
- Update queries
- Delete queries
- Transactions
- Query alters
- Update hooks
- Summary
- Custom Fields
- A recap of Field type plugins
- Field type
- Field widget
- Field formatter
- Field settings
- Using our custom field type as a base field
- Summary
- Access Control
- Introduction to the Drupal access system
- Roles and permissions under the hood
- Defining permissions
- Checking the user credentials
- Route access
- Custom route access
- Static approach
- Service approach
- Programmatically checking access on routes
- Bonus—dynamic route options for access control
- CSRF protection on routes
- Altering routes
- Entity access
- Injecting services into Entity handlers
- Entity access hooks
- Field access
- Entity access in routes
- Node access grants
- Block access
- Summary
- Caching
- Introduction to Caching
- Cacheability metadata
- Cache tags
- Cache contexts
- Max-age
- Using the cache metadata
- Caching in block plugins
- Caching access results
- Placeholders and lazy building
- Lazy builders
- Using the Cache API
- Creating our own cache bin
- Summary
- JavaScript and the Ajax API
- JavaScript in Drupal
- Drupal behaviors
- Our library
- The JavaScript
- Drupal settings
- The Ajax API
- Ajax links
- Ajax in forms
- States (Form) system
- Summary
- Internationalization and Languages
- Introduction to the multilingual ecosystem
- Language
- Content translation
- Configuration translation
- Interface translation
- Internationalization
- Content entities and the Translation API
- Summary
- Batches Queues and Cron
- Batch-powered update hooks
- Batch operations
- Creating the batch
- Batch operations
- Cron
- Queues
- Introduction to the Queue API
- Cron-based queues
- Processing a queue programmatically
- The Lock API
- Summary
- Views
- Entities in Views
- Exposing custom data to Views
- Views data
- Views fields
- Views relationships
- Views sorts and filters
- Views arguments
- Altering Views data
- Custom Views field
- Field configuration
- Custom Views filter
- Custom Views argument
- Views theming
- Views hooks
- Summary
- Working with Files and Images
- The filesystem
- Stream wrappers
- Managed versus unmanaged files
- Using the File and Image fields
- Working with managed files
- Attaching managed files to entities
- Helpful functions for dealing with managed files
- Managed file uploads
- Managed file form element
- Entity CRUD hooks
- Managed file usage service
- Processing the CSV file
- Our own stream wrapper
- Working with unmanaged files
- Private filesystem
- Images
- Image toolkits
- Image styles
- Rendering images
- Summary
- Automated Testing
- Testing methodologies in Drupal 8
- PHPUnit
- Registering tests
- Unit tests
- Mocked dependencies
- Kernel tests
- TeamCleaner test
- CsvImporter test
- Functional tests
- Configuration for functional tests
- Hello World page test
- Hello World form test
- Functional JavaScript tests
- Time test
- CsvImporter test
- Summary
- Drupal 8 Security
- Cross-Site Scripting (XSS)
- Sanitization methods in Drupal 8
- Double escaping
- SQL Injection
- Cross-Site Request Forgery (CSRF)
- Summary
- Other Books You May Enjoy
- Leave a review - let other readers know what you think 更新時間:2021-07-02 12:23:34
推薦閱讀
- Data Visualization with D3 4.x Cookbook(Second Edition)
- Reporting with Visual Studio and Crystal Reports
- Getting started with Google Guava
- Java技術手冊(原書第7版)
- Visual C++數字圖像處理技術詳解
- PostgreSQL Replication(Second Edition)
- Linux命令行與shell腳本編程大全(第4版)
- Visual C++開發入行真功夫
- Python機器學習算法: 原理、實現與案例
- Web前端應用開發技術
- Python:Deeper Insights into Machine Learning
- Learning C++ by Creating Games with UE4
- Mastering Machine Learning with R
- SAP HANA Cookbook
- Mastering VMware Horizon 6
- Learning WebRTC
- Unity3D游戲開發標準教程
- AVR單片機C語言應用100例
- RStudio for R Statistical Computing Cookbook
- INSTANT OSGi Starter
- Netty、Redis、Zookeeper高并發實戰
- Vue.js+Node.js開發實戰:從入門到項目上線
- Learning Object-Oriented Programming
- 零基礎學Python編程實戰
- NoSQL數據庫原理與應用
- UI設計心理學
- ASP.NET Core 2 and Angular 5
- Preparing for the Certified OpenStack Administrator Exam
- Java從初學到精通
- Mastering Kali Linux Wireless Pentesting