Pascal Bartl
Quiz by , created more than 1 year ago

TYPO3 CD 2020 (zweite Auflage) Quiz on 4.3 Models, Repositories and Relations, created by Pascal Bartl on 09/04/2021.

4
0
0
Pascal Bartl
Created by Pascal Bartl over 3 years ago
Close

4.3 Models, Repositories and Relations

Question 1 of 21

1

Which of the following statements about domain models in Extbase is correct? (1)

Select one or more of the following:

  • 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

Explanation

Question 2 of 21

1

What is required in an Extbase repository to prevent it from returning deleted records? (1)

Select one or more of the following:

  • 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

Explanation

Question 3 of 21

1

What needs to be done in an Extbase repository to include hidden and deleted records in the result set? (1)

Select one or more of the following:

  • 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

Explanation

Question 4 of 21

1

Which type of relation is not possible with TCA’s inline field type (IRRE)? (1)

Select one or more of the following:

  • 1:n

  • n:1

  • 1:1

  • m:n

  • IRRE supports all types of relations

Explanation

Question 5 of 21

1

Which property annotation is required to define a relation of type 1:n in your domain model? (1)

Select one or more of the following:

  • /**
    * @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>
    */

Explanation

Question 6 of 21

1

Which repository method tests whether the value of a domain model property, which has a m:n relation, contains a specific value? (1)

Select one or more of the following:

  • in()

  • between()

  • contains()

  • is()

  • inbetween()

Explanation

Question 7 of 21

1

Which repository method tests whether the value of a domain model property is included in a list of possible
values? (1)

Select one or more of the following:

  • in()

  • between()

  • contains()

  • is()

  • inbetween()

Explanation

Question 8 of 21

1

What needs to be configured to instruct all methods of a repository to return results ordered by a specific property? (1)

Select one or more of the following:

  • 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

Explanation

Question 9 of 21

1

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
];
...
}

Select one or more of the following:

  • 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

Explanation

Question 10 of 21

1

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)

Select one or more of the following:

  • 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

Explanation

Question 11 of 21

1

What needs to be configured to access records from the repository stored on page UID = 0? (1)

Select one or more of the following:

  • 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

Explanation

Question 12 of 21

1

What needs to be configured to access all records, regardless of which page they are stored on? (1)

Select one or more of the following:

  • 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)

Explanation

Question 13 of 21

1

How can a custom extension access the fe_users database table? (2)

Select one or more of the following:

  • 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

Explanation

Question 14 of 21

1

Which statement about the Persistence Manager is correct? (1)

Select one or more of the following:

  • 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”

Explanation

Question 15 of 21

1

How can you access TypoScript settings within a domain model? (1)

Select one or more of the following:

  • Via $this->setting

  • Via $this->settings

  • Via $this->typoscript

  • Via $this->config

  • None of the options above

Explanation

Question 16 of 21

1

What is the recommended way to access TypoScript settings in a repository? (1)

Select one or more of the following:

  • 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

Explanation

Question 17 of 21

1

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
}
}
}
}
}
}

Select one or more of the following:

  • 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

Explanation

Question 18 of 21

1

A domain model has a relation parent to itself. Is it possible to access the relation via the Query Manager? (1)

Select one or more of the following:

  • 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

Explanation

Question 19 of 21

1

How can we make a TypoScript object available in a controller? (1)

Select one or more of the following:

  • Via $this->configurationManager->getContentObject()->data

  • Via $this->cObj

  • By utilising the “ContentObjectRenderer”

  • By utilising the “ContentObjectModel”

  • This is not possible in a controller

Explanation

Question 20 of 21

1

Is it possible to use stdWrap in Extbase TypoScript settings as shown below? (1)

plugin.tx_myextension_example {
settings {
uid.dataWrap = {page:uid}
}
}

Select one or more of the following:

  • 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

Explanation

Question 21 of 21

1

What are “Switchable Controller Actions”? (2)

Select one or more of the following:

  • 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

Explanation