4.3 Models, Repositories and Relations

Description

TYPO3 CD 2020 (zweite Auflage) Quiz on 4.3 Models, Repositories and Relations, created by Pascal Bartl on 09/04/2021.
Pascal Bartl
Quiz by Pascal Bartl, updated more than 1 year ago
Pascal Bartl
Created by Pascal Bartl about 3 years ago
4
0

Resource summary

Question 1

Question
Which of the following statements about domain models in Extbase is correct? (1)
Answer
  • Three different basis objects exist: entity, value object and factory
  • Properties of models should be accessed and modified directly
  • A “getter” method should be used to access a property
  • The visibility of domain model properties in Extbase should be public
  • All options listed above are wrong

Question 2

Question
What is required in an Extbase repository to prevent it from returning deleted records? (1)
Answer
  • The TypoScript setting setup.tx_extbase.view.hidden = 0 must be set
  • The query setting setIncludeDeleted(false) must be set
  • The parameter true must be passed to the repository method findAll()
  • The parameter true must be passed to the repository method execute()
  • Nothing: the repository does not return deleted records by default

Question 3

Question
What needs to be done in an Extbase repository to include hidden and deleted records in the result set? (1)
Answer
  • This is not possible. Deleted records are removed from the database
  • Both query settings setIncludeHidden() and setIncludeDeleted() need to be set to true
  • Both query settings setIgnoreEnableFields() and setEnableFieldsToBeIgnored() need to be set appropriately
  • The TCA configuration ['ctrl']['ignoreEnableFields'] of the table need to be set to true

Question 4

Question
Which type of relation is not possible with TCA’s inline field type (IRRE)? (1)
Answer
  • 1:n
  • n:1
  • 1:1
  • m:n
  • IRRE supports all types of relations

Question 5

Question
Which property annotation is required to define a relation of type 1:n in your domain model? (1)
Answer
  • /** * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage */
  • /** * @var \Foo\Bar\Domain\Model\Post */
  • /** * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\Foo\Bar\Domain\Model\Post> */
  • /** * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage[\Foo\Bar\Domain\Model\Post] */
  • /** * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<1:n><\Foo\Bar\Domain\Model\Post> */

Question 6

Question
Which repository method tests whether the value of a domain model property, which has a m:n relation, contains a specific value? (1)
Answer
  • in()
  • between()
  • contains()
  • is()
  • inbetween()

Question 7

Question
Which repository method tests whether the value of a domain model property is included in a list of possible values? (1)
Answer
  • in()
  • between()
  • contains()
  • is()
  • inbetween()

Question 8

Question
What needs to be configured to instruct all methods of a repository to return results ordered by a specific property? (1)
Answer
  • This can be achieved in a TypoScript file.
  • By passing the parameter $order in the method’s signature
  • By adding the @sort annotation to the domain model
  • By setting the $defaultOrderings property in the repository class
  • By adding an appropriate sortby property to the TCA

Question 9

Question
Which statements about the following code snippet are correct? (2) <?php namespace Vendor\MyExtension\Domain\Repository; use \TYPO3\CMS\Extbase\Persistence\Repository; use \TYPO3\CMS\Extbase\Persistence\QueryInterface; class ExampleRepository extends Repository { protected $defaultOrderings = [ 'title' => QueryInterface::ORDER_DESCENDING ]; ... }
Answer
  • Records read from this repository are sorted by their title field in descending order by default
  • The additional configuration sortBy is required in the TCA of the repository to set the default sort order
  • The property $defaultOrderings has no effect by default
  • The constant ORDER_ASCENDING can be used instead of ORDER_DESCENDING to sort in ascending order
  • If the property $defaultOrderings would not exist, the repository would use the sorting defined in the TCA

Question 10

Question
Assuming two domain objects Book and Chapters exist, which have a 1:n-relation. How can you determine all chapters of a book which match a search string? (1)
Answer
  • By searching in the Book repository and by using in() on the property chapters
  • By searching in the Book repository and by using contains() on the property chapters
  • By searching in the Chapters repository and by using in() on the property books
  • By searching in the Chapters repository and by using contains() on the property books
  • By searching in the Chapters repository and iterating all records to find the appropriate chapters

Question 11

Question
What needs to be configured to access records from the repository stored on page UID = 0? (1)
Answer
  • Nothing needs to be configured as this is the default
  • The query setting in the repository must be set explicitly: setStoragePageIds([0])
  • This feature needs to be enabled in the repository explicitly: setEnableRootPage(true)
  • When the query is executed, the page UID must be passed as an argument in the function call: execute(0)
  • Records on page UID = 0 can not be accessed as a general rule

Question 12

Question
What needs to be configured to access all records, regardless of which page they are stored on? (1)
Answer
  • Nothing needs to be configured as this is the default
  • The TypoScript configuration persistence.storagePid needs to be set to all
  • The page restriction needs to be lifted by using the Restriction Builder
  • The query setting in the repository must be set explicitly: setRespectStoragePage(false)

Question 13

Question
How can a custom extension access the fe_users database table? (2)
Answer
  • By extending the domain model TYPO3\CMS\Extbase\Domain\Model\FrontendUser
  • By adding the mapping as TypoScript
  • By adding the mapping as TSconfig
  • By extending the fe_users TCA appropriately
  • The only option is to frequently copy the content of table fe_users into a custom table via a cron-job

Question 14

Question
Which statement about the Persistence Manager is correct? (1)
Answer
  • The Persistence Manager is loaded in the controller automatically and can be used in custom scripts
  • The Persistence Manager is loaded in the repository automatically and can be used in custom scripts
  • By using the Persistence Manager, a single object or all objects can be made persistent
  • The Persistence Manager is an internal method of Extbase which is not part of the public API
  • The Persistence Manager is of type “prototype”

Question 15

Question
How can you access TypoScript settings within a domain model? (1)
Answer
  • Via $this->setting
  • Via $this->settings
  • Via $this->typoscript
  • Via $this->config
  • None of the options above

Question 16

Question
What is the recommended way to access TypoScript settings in a repository? (1)
Answer
  • It’s recommended to access TypoScript configuration from the controller only
  • It’s recommended to access TypoScript configuration by using the Object Manager
  • It’s recommended to access TypoScript configuration by using the Settings Manager
  • TypoScript settings can be accessed by using $this->settings directly
  • TypoScript settings can be accessed by using $settings directly

Question 17

Question
Which statments about the following TypoScript code are correct? (2) plugin.tx_myextension { persistence { classes { Vendor\MyExtension\Domain\Model\Client { mapping { tableName = fe_users columns { first_name.mapOnProperty = name } } } } } }
Answer
  • The code has no effect: a fully qualified class name must be used as a tableName value
  • The property name of the model Client maps to the field first_name of the database table fe_users
  • The code has no effect: table and attribute names have to be written in UpperCamelCase
  • Only one property can be mapped between two tables
  • All properties are mapped by default if their name scheme matches

Question 18

Question
A domain model has a relation parent to itself. Is it possible to access the relation via the Query Manager? (1)
Answer
  • Yes, this is possible without any configuration
  • Yes, if the relation has the annotation @selfreference
  • Yes, if the TypoScript key features.selfreference = 1 is set
  • This is not possible – no error message is generated
  • This is not possible – an error message is generated

Question 19

Question
How can we make a TypoScript object available in a controller? (1)
Answer
  • Via $this->configurationManager->getContentObject()->data
  • Via $this->cObj
  • By utilising the “ContentObjectRenderer”
  • By utilising the “ContentObjectModel”
  • This is not possible in a controller

Question 20

Question
Is it possible to use stdWrap in Extbase TypoScript settings as shown below? (1) plugin.tx_myextension_example { settings { uid.dataWrap = {page:uid} } }
Answer
  • Yes, this is supported out-of-the-box
  • Yes, but this needs to be activated in the Extbase configuration
  • Yes, you have to use PHP code to process stdWrap functions
  • Yes, but extbaseWrap must be used instead of dataWrap
  • No, this is not supported and not possible at all

Question 21

Question
What are “Switchable Controller Actions”? (2)
Answer
  • An option to limit which controller-action-combinations are executable
  • An option to switch between actions at run time
  • An option to control the sort order of actions shown in the backend
  • A configuration option to switch between backend users
  • An option to switch between controllers, based on actions
Show full summary Hide full summary

Similar

How to Create A Mindmap
PatrickNoonan
Cell Structure
daniel.praecox
2014 GCSE History Exam Paper Setup
James McConnell
Plano de Revisão Geral
miminoma
SAT Exam 'Word of the Day' Set 2
SAT Prep Group
Know the principles of electricity
Vito Martino
HISTOGRAMS
Elliot O'Leary
Romeo + Juliet (Themes)
alexandra_m_
Pathos in Battle
mouldybiscuit
Using GoConqr to study English literature
Sarah Egan
1PR101 2.test - Část 17.
Nikola Truong