0 follower

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 modeller hellre Àn i vyer.

En vy har ett namn avsett att identifiera vyns skriptfil vid rendering. Vyn och dess skriptfil har samma namn. Till exempel, vynamnet 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:

$this->render('edit', array(
    'var1'=>$value1,
    'var2'=>$value2,
));

I ovanstÄende exempel kommer metoden render() att extrahera arrayen i parameter 2 till variabler. Resultatet blir att vi i vyskriptet kan anvÀnda de lokala variablerna $var1 och $var2.

1. 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 pÄ följande sÀtt bÀdda in vyn dÀremellan:

......header here......
<?php echo $content; ?>
......footer here......

dÀr $content innehÄller renderingsresultatet för vyn.

Layout blir underförstÄtt applicerad vid anrop till 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() för rendering av en vy utan att applicera nÄgon layout.

2. Widget ¶

En widget Àr en instans av CWidget eller av en 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Ànssnittets kod.

För att anvÀnda en widget, gör sÄ hÀr i ett vyskript:

<?php $this->beginWidget('path.to.WidgetClass'); ?>
...body content that may be captured by the widget...
<?php $this->endWidget(); ?>

eller

<?php $this->widget('path.to.WidgetClass'); ?>

Det senare anvÀnds nÀr widget:en inte behöver omfatta innehÄll (body content).

Widgetar kan konfigureras för anpassning av deras beteende. Detta sker genom att man sÀtter dess initiala propertyvÀrden vid anrop till CBaseController::beginWidget eller CBaseController::widget. Till exempel, vid anvÀndning av en CMaskedTextField widget, kan vi vilja specificera vilken mask som skall anvÀndas. Detta kan göras genom att pÄ följande sÀtt lÀmna med en vektor (array) innehÄllande initialvÀrden för widget-egenskaper (property), dÀr vektorns nycklar Àr egenskapsnamn och vektorns vÀrden Àr initialvÀrden för widgetens egenskaper:

<?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() och run() med egna:

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.

3. 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.

Found a typo, or you think this page needs improvement?
Edit it on GitHub !