Message-ID: <2033459293.4230.1485861889040.JavaMail.confluence@ip-10-127-227-164> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_4229_720132704.1485861889039" ------=_Part_4229_720132704.1485861889039 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
The role of the (eZ\Publish\Core\MVC\Symfony\)View\Manager
&=
nbsp;is to select the right template for displaying a given content or loca=
tion. It aggregates objects called content and location view providers<=
/em> which respectively implement eZ\Publish\Core\MVC\Symfony\Vi=
ew\Provider\Content
and eZ\Publish\Core\MVC\Symfony=
\View\Provider\Location
interfaces.
Each time a content is to be displayed through the Content\ViewCon=
troller
, the View\Manager
iterates over the registered =
content or location View\Provider
objects and calls getView
()
.
Name | Usage |
---|---|
View provider configuration |
Based on application configuration. |
|
Forwards view selection to the legacy kernel =
by running the old content/view module. |
View\Provider\Loca=
tion
and View\Provider\Content
View\Provider\Location
only deals with Location objects and implements eZ\Publish\Core\MVC\Symfony\View\Pro=
vider\Location
interface.
View\Provider\Content
only deals with eZ\Publish\Cor=
e\MVC\Symfony\View\Provider\Content
interface.View\Provider\(Location=
|Content)
View\Provider
objects need to be properly registered in the=
service container with the ezpublish.location_view_provider<=
/strong>
or ezpublish.content_view_provider
service tag.
parameters: acme.location_view_provider.class: Acme\DemoBundle\Content\MyLocationVi= ewProvider services: acme.location_view_provider: class: %ezdemo.location_view_provider.class% tags: - {name: ezpublish.location_view_provider, priority: 30}=20
Tag attribute name | Usage |
---|---|
priority | An integer giving the priority to the The priority range is from -255 to 255 |
<?php namespace Acme\DemoBundle\Content; use eZ\Publish\Core\MVC\Symfony\View\ContentView; use eZ\Publish\Core\MVC\Symfony\View\Provider\Location as LocationViewProvi= der; use eZ\Publish\API\Repository\Values\Content\Location; class MyLocationViewProvider implements LocationViewProvider { /** * Returns a ContentView object corresponding to $location, or void if = not applicable * * @param \eZ\Publish\API\Repository\Values\Content\Location $location * @param string $viewType * @return \eZ\Publish\Core\MVC\Symfony\View\ContentView|null */ public function getView( Location $location, $viewType ) { // Let's check location Id switch ( $location->id ) { // Special template for home page, passing "foo" variable to th= e template case 2: return new ContentView( "AcmeDemoBundle:$viewType:home.html= .twig", array( 'foo' =3D> 'bar' ) ); } // ContentType identifier (formerly "class identifier") switch ( $contentInfo->contentType->identifier ) { // For view full, it will load AcmeDemoBundle:full:small_folder= .html.twig case 'folder': return new ContentView( "AcmeDemoBundle:$viewType:small_fol= der.html.twig" ); } } }=20