Hogy lehet a layout-okat kezelni? Nézegetem az alap css-t, de nem találtam semmit sem.
Lényegében 2 layoutot szeretnék, baloldalt egy sidebar, jobb oldalt a tartalom. Tehát a mostani ellentéte lenne.
Hogy lehet a layout-okat kezelni? Nézegetem az alap css-t, de nem találtam semmit sem.
Lényegében 2 layoutot szeretnék, baloldalt egy sidebar, jobb oldalt a tartalom. Tehát a mostani ellentéte lenne.
Pontosítanád egy kicsit a kérdést? Gondolom a yiic webapp által generált layout fájlokat már megtaláltad a views/layouts könytárban, és tudod, hogy ezeket tetszőlegesen módosíthatod/törölheted ill. új layoutokat készithetsz. Pontosan hol akadtál el? A css megírásánál?
Igen, azokat megtaláltam, csak magára a működésére nem jöttem rá, hogy mit hova tesz. Illetve, hogy hol tudom ezeket méretezni, mert a css fájlban erre nem találok utalást.
Igazából, mint írtam azt szeretném, hogyha a sidabar bal oldalon lenne és a tartalmi rész lenne jobb oldalon.
A generált css a Blueprint css frameworkre épül. A column2 layoutban a
<div class="span-19">...</div>
és a
<div class="span-5 last">...</div>
elemek az érdekesek, ezeknek a tartalmát kell felcserélned, az oszlopok szélességét pedig a "span-" értéke határozza meg, de a blueprint oldalán megtalálod a részletes leírást.
Na, ennek jobban utána kell majd nézni akkor, mert nem ismerem még a blueprint frameworköt.
Megnézegettem, amit szerettem volna meg is oldottam. Már csak 2 kérdésem lenne ezzel kapcsolatban.
Amikor 2 layer van, hogy mondom meg neki, hogy melyikbe mi kerüljön?
Én ezt "választottam":
<?php $this->beginContent('//layouts/main'); ?>
<div class="span-5">
<div id="sidebar">
<?php
$this->beginWidget('zii.widgets.CPortlet', array(
'title'=>'Operations',
));
$this->widget('zii.widgets.CMenu', array(
'items'=>$this->menu,
'htmlOptions'=>array('class'=>'operations'),
));
$this->endWidget();
?>
</div><!-- sidebar -->
</div>
<div class="span-19 last">
<div id="content">
<?php echo $content; ?>
</div><!-- content -->
</div>
<?php $this->endContent(); ?>
Itt bal oldalt van egy kisebb rész és a tartalmi rész jobb oldalt van. Hogy lehet dinamikus tartalomnál ezt megadni?
Pl ha renderelek több tartalmat, akkor mindegyik view résznél megadom, hogy $this->layout = ‘valami’;
Ez még nem egészen kerek, illetve ti ajaxos kéréseknél, a controllerbe íratjátok ki? Mert én próbáltam saját view-ot csinálni hozzá, de behúzta az egész oldalt, nekem pedig csak a renderelt view tartalmi része kellene.
Ha a dinamikus tartalom több egymástól független résztartalomból áll össze, akkor widgeteket vagy clipeket érdemes használni, a tartalom jellegétől és az oldal szerkezetétől függően.
Ajax kéréseknél használd a renderPartial()-t.
Ez a második részt nem értem. Magában a controllerben használjam így? Ekkor nem fog a többi oldal rész betöltődni? Na ezt megnézem.
Igen, a kontrollerben, a $this->render() helyett. Ha ugyanabból az actionból szeretnéd kiszolgálni az ajax és a nem ajax kéréseket is, akkor valahogy így:
if (Yii::app()->request->isAjaxRequest) {
$this->renderPartial('myView', array('data' => $data));
} else {
$this->render('myView', array('data' => $data));
}