Files
yii/docs/guide/sv/basics.view.txt
2010-09-05 13:02:42 +00:00

145 lines
5.1 KiB
Plaintext

View
====
En vy (view) är ett PHP-skript huvudsakligen bestående av element som hör till
användargränssnittet. Vyn kan innehålla PHP-satser, men det rekommenderas att
dessa satser inte ändrar datamodeller samt att de förblir relativt enkla. I
andan av separation mellan programlogik och presentation, bör stora block av
programlogik placeras i kontroller eller modell istället för i vyn.
En vy har ett namn avsett att identifiera vyns skriptfil vid rendering. Vyn och
dess skriptfil har samma namn. Till exempel, vyn `edit` refererar till en
vyskriptfil med namnet `edit.php`. En vy kan renderas genom anrop till
[CController::render()] med vyns namn bifogat. Metoden kommer att söka efter
motsvarande vyfil i katalogen `protected/views/ControllerID`.
I vyns skriptfil kan kontrollerinstansen adresseras med hjälp av `$this`. Vi kan
därför hämta in (`pull`) varje egenskap (property) från kontrollern genom att utvärdera
`$this->propertyName` i vyn.
Vi kan också trycka ut (`push`) data till vyn:
~~~
[php]
$this->render('edit', array(
'var1'=>$value1,
'var2'=>$value2,
));
~~~
I ovanstående exempel kommer metoden [render()|CController::render] att
extrahera arrayen i parameter 2 till variabler. Resultatet blir att vi i
vyskriptet kan använda de lokala variablerna `$var1` och `$var2`.
Layout
------
Layout är en speciell vy som används för att dekorera vyer. Den innehåller
vanligtvis delar av användargränssnittet vilka är gemensamma för många vyer.
Till exempel kan en layout innehålla sidhuvud och sidfot samt bädda in innehållsvyn däremellan,
~~~
[php]
......header here......
<?php echo $content; ?>
......footer here......
~~~
där `$content` innehåller renderingsresultatet för innehållsvyn.
Layout blir underförstått applicerad vid anrop till
[render()|CController::render]. Som standard används vyskriptet
`protected/views/layouts/main.php` som layout. Detta kan anpassas genom att
ändra antingen [CWebApplication::layout] eller [CController::layout]. Använd
[renderPartial()|CController::renderPartial] för rendering av en vy utan att
applicera någon layout.
Widget
------
En widget är en instans av [CWidget] eller nedärvd klass. Den är en komponent
huvudsakligen avsedd för presentation. Widget bäddas vanligen in i vyskript för
att generera något komplext, men ändå komplett och oberoende, användargränssnitt.
Till exempel kan en kalenderwidget användas till att rendera ett avancerat
kalendergränssnitt. Widget möjliggör bättre återanvändningsbarhet av
användargränssnittet.
För att använda en widget, gör så här i ett vyskript:
~~~
[php]
<?php $this->beginWidget('path.to.WidgetClass'); ?>
...body content that may be captured by the widget...
<?php $this->endWidget(); ?>
~~~
eller
~~~
[php]
<?php $this->widget('path.to.WidgetClass'); ?>
~~~
Det senare används när widget:en inte behöver omfatta innehåll (body content).
Widget kan konfigureras för anpassning av dess beteende. Detta sker genom att
man sätter dess initiala propertyvärden vid anrop till
[CBaseController::beginWidget] eller [CBaseController::widget]. Till exempel,
för [CMaskedTextField] widget:en, vill vi kunna specificera vilken mask som
skall användas. Detta kan göras genom att lämna med en array av initialvärden
för widget-egenskaper (property) på följande sätt, där arrayens nycklar är
egenskapsnamn, arrayvärdena initialvärden för widgetens egenskaper:
~~~
[php]
<?php
$this->widget('CMaskedTextField',array(
'mask'=>'99/99/9999'
));
?>
~~~
För att definiera en ny widget, ärv en underklass från [CWidget] och åsidosätt metoderna
[init()|CWidget::init] och [run()|CWidget::run] med egna:
~~~
[php]
class MyWidget extends CWidget
{
public function init()
{
// this method is called by CController::beginWidget()
}
public function run()
{
// this method is called by CController::endWidget()
}
}
~~~
En widget kan. liksom en kontroller, ha sin egen vy. Som standard har en widget
sina vyfiler placerade i underkatalogen `views` till katalogen som innehåller
widgetens klassfil. Dessa vyer kan renderas genom anrop till
[CWidget::render()], ungefär som med en kontroller. Den enda skillnaden är att
ingen layout appliceras på en widgetvy. `$this` i vyn refererar till widgetens
instans i stället för till kontrollerinstansen.
Systemvy
--------
Systemvyer refererar till de vyer som Yii använder för att presentera
felmeddelanden och loggningsinformation. Till exempel, när en användare skickar
en begäran gällande en icke-existerande kontroller eller åtgärd, kommer Yii
att signalera en exception som förklarar felet. Yii presenterar en exception med
hjälp av en specifik systemvy.
Namn på systemvyer följer vissa regler. Namn i stil med `errorXXX` avser vyer
för presentation, [CHttpException] med felkod `XXX`. Till exempel, om
[CHttpException] signaleras med felkod 404, så kommer vyn `error404` att visas.
Yii erbjuder en standarduppsättning systemvyer placerade under
`framework/views`. Dessa kan anpassas genom att vyfiler med samma namn placeras
under `protected/views/system`.
<div class="revision">$Id: basics.view.txt 2367 2010-08-29 17:29:22Z qiang.xue $</div>