Pascal Bartl
Quiz by , created more than 1 year ago

TYPO3 CD 2020 (zweite Auflage) Quiz on 4.2 Extbase Controllers and Actions, created by Pascal Bartl on 09/04/2021.

3
0
0
Pascal Bartl
Created by Pascal Bartl about 3 years ago
Close

4.2 Extbase Controllers and Actions

Question 1 of 19

1

Which statements about Extbase controllers are correct? (2)

Select one or more of the following:

  • Extbase controllers are always interfaces

  • Every controller must directly extend the basis controller
    TYPO3\CMS\Extbase\Mvc\Controller\ActionController

  • The visibility of all properties should be protected

  • All method names in a controller must end in Action()

  • The logic implemented in controllers should be kept to a minimum

Explanation

Question 2 of 19

1

What are the characteristics of the methods redirect() and forward() in a controller? (2)

Select one or more of the following:

  • The redirect() method requires the controller name of the target as an argument

  • The redirect() method initiates a new HTTP request

  • The forward() method transfers the request to the target action automatically

  • The forward() method changes the URL in the way that the action name appears

  • The redirect() and forward() methods both clear the cache

Explanation

Question 3 of 19

1

What are the differences between the controller methods forward() and redirect()? (2)

Select one or more of the following:

  • There are no differences

  • Method $this->forward() is set as $this->request->setDispatched(false)

  • Method $this->redirect() initiates a new HTTP request; method $this->forward() does not

  • Method $this->forward() does not accept any arguments, $this->redirect() does

  • Method $this->redirect() renders a template by default; method $this->forward() does not

Explanation

Question 4 of 19

1

How can you generate a HTTP status code 400? (2)

Select one or more of the following:

  • die(400, null, 'Bad Request.')

  • $this->addError(400, null, 'Bad Request.')

  • new \TYPO3\CMS\Extbase\Error\Error(400, null, 'Bad Request.')

  • $this->throwStatus(400, null, 'Bad Request.')

  • Instantiate a response object and set the status code as \GuzzleHttp\Psr7\Response(400)

Explanation

Question 5 of 19

1

What are the characteristics of controllers? (2)

Select one or more of the following:

  • Controllers are the control and central processing unit in the MVC stack

  • Controllers are responsible for initialising domain models

  • The logic implemented in controllers should be kept to a minimum

  • All business logic should be implemented in controllers

  • Controllers validate all objects

Explanation

Question 6 of 19

1

Which statements about “actions” in Extbase’s controller/action concept are correct? (3)

Select one or more of the following:

  • Action methods are always static functions

  • Actions are public methods of a controller class

  • Names of action methods always end in Action, for example listAction()

  • Each action must be stored in a separate PHP file under Classes/Actions/

  • To be able to request an action of a plugin, the action has to be registered by using
    configurePlugin()

  • Action methods must always return a string (this is the content shown in the frontend)

Explanation

Question 7 of 19

1

How can a fallback to the default action be achieved, in order to prevent an error if a non-configured action is
called? (1)

Select one or more of the following:

  • This is the default behaviour of Extbase

  • An appropriate configuration in file ext_localconf.php is required

  • The TypoScript setting callDefaultActionIfActionCantBeResolved can be configured

  • An errorAction() method can be implemented in the controller

  • The key routing can be used in TypoScript

Explanation

Question 8 of 19

1

How can a “Page Not Found” error message be displayed – HTTP code 404 – if a non-configured action is called? (1)

Select one or more of the following:

  • This is the default behaviour of Extbase

  • An appropriate configuration in the ext_localconf.php file is required

  • The TypoScript setting exceptionHandler can be configured

  • An errorAction() method can be implemented in the controller

  • The TypoScript setting throwPageNotFoundExceptionIfActionCantBeResolved can be configured

Explanation

Question 9 of 19

1

Which approach is officially recommended to get an object in a controller? (1)

Select one or more of the following:

  • use \Vendor\MyExtension\Domain\Repository\TagRepository;
    ...
    $this->objectManager->get(TagRepository::class)

  • use \Vendor\MyExtension\Domain\Repository\TagRepository;
    ...
    $this->objectManager->create(TagRepository::class)

  • new \Vendor\MyExtension\Domain\Repository\TagRepository

  • use \Vendor\MyExtension\Domain\Repository\TagRepository;
    ...
    $this->instanceManager->make(TagRepository::class)

  • use \TYPO3\CMS\Core\Utility\GeneralUtility;
    use \Vendor\MyExtension\Domain\Repository\TagRepository;
    ...
    GeneralUtility::makeInstance(TagRepository::class);

Explanation

Question 10 of 19

1

Where is the Object Manager available as $this->objectManager by default? (2)

Select one or more of the following:

  • In repositories

  • In ViewHelpers

  • In Fluid templates

  • In controllers

  • In domain models

Explanation

Question 11 of 19

1

Which statements about the view in a controller are correct? (2)

Select one or more of the following:

  • You can access the output of a view by using the method render()

  • The view can only be rendered at the end of an action method

  • The view is available in the action as $this->view

  • To prevent rendering the view, the action must return false

  • It is not possible to render a different view than the default one

Explanation

Question 12 of 19

1

How do you prevent an action from being executed? (2)

Select one or more of the following:

  • The action can be omitted from the TypoScript key switchableControllerActions

  • The action can be omitted from the first array of the plugin configuration in file ext_localconf.php

  • The action can be omitted from the second array of the plugin configuration in file ext_localconf.php

  • By setting the attribute deactivate in file tables.php

  • By configuring the action in the page TS key deniedActions

Explanation

Question 13 of 19

1

How can an invalid domain object $blog be accessed in an action new? (2)

Select one or more of the following:

  • This is always possible

  • Via the initializeNewAction() method

  • Via the errorNewAction() method

  • Via the newAction() method if the annotation @ignorevalidation $blog is set

  • Via the __destruct() method

Explanation

Question 14 of 19

1

What is the purpose of the method errorAction() in a controller? (1)

Select one or more of the following:

  • This method is executed if an error in the controller occurs

  • This method is executed if an error in the view occurs

  • This method is executed before the primary action

  • This method is always executed after the primary action

  • This method is executed if a validation error in the controller occurs

Explanation

Question 15 of 19

1

How can validation errors of an object $blog be accessed in a controller? (1)

Select one or more of the following:

  • This is not possible

  • By $blog->getErrors()

  • By $this->getErrors()

  • By $this->controllerContext->getRequest()->getErrors()

  • By $this->errors

Explanation

Question 16 of 19

1

How can a non-persisting object be created from a GET request? (1)

Select one or more of the following:

  • This happens automatically if the object is passed to the method as a parameter in the action

  • By using the “Object Type Converter”

  • By manually executing convertArrayToObject() in the Property Mapper

  • By setting the property mapping in TypoScript

Explanation

Question 17 of 19

1

What is the purpose of the following method in a controller? (2)

use \TYPO3\CMS\Core\Utility\ArrayUtility;
...
public function initializeAction()
{
$settings = [
...
];

ArrayUtility::mergeRecursiveWithOverrule(
$this->settings,
$settings
);
}

Select one or more of the following:

  • FlexForm settings are merged with TypoScript settings

  • Custom settings are merged with TypoScript settings

  • All empty values in the arrays, both $settings and $this->settings, are removed

  • Keys with a value __UNSET in the array $settings unset array keys with the same name in the array $this->settings

Explanation

Question 18 of 19

1

How do you retrieve the data of the current content object in Extbase? (1)

Select one or more of the following:

  • By accessing getContentObject()->data of the ConfigurationManager

  • By accessing $this->request->getContentObjectData()

  • By accessing $this->cObj->data

  • By accessing $this->cObj->cObjGetSingle()

Explanation

Question 19 of 19

1

In which file are custom Type Converters registered? (1)

Select one or more of the following:

  • File ext_tables.php

  • File ext_localconf.php

  • The controller

  • File Configuration/TCA/table.php

  • File Configuration/TypoScript/setup.typoscript

Explanation