witajcie,
mam kalendarz na dany miesiąc
Napisałem to w taki sposób
Kontroler:
$this->view->timestamp = time(); $this->view->curTimestamp = time(); $this->view->day = $day;
$this->view->month = $month;
$this->view->year = $year;
$this->view->firstDayOfMonth = date('w', mktime(0
, 0
, 0
, $month, 1
, $year)); $this->view->dayNameArray = array('Nd', 'Pn', 'Wt', 'Sr', 'Czw', 'Pt', 'Sb'); $this->view->totalDay = date('t', time());
Widok:
<?php $curDay =1;?>
<table class="mini_calendar">
<thead class="mini_calendar_head">
<tr>
<th><a href="
<?php echo $this->url(array('controller'=>'terminy', 't'=>strtotime
('-1 month', $this->timestamp)));?>"><img src="/SYSTEM/public/img/arrow_left.png" /></a></th>
<th colspan='5' ><a href="
<?php echo $this->url(array('controller'=>'terminy', 't'=>$this->curTimestamp));?>">cur day</a></th>
<th><a href="
<?php echo $this->url(array('controller'=>'terminy', 't'=>strtotime
('+1 month', $this->timestamp)));?>"><img src="/SYSTEM/public/img/arrow_right.png" /></a></th>
</tr>
<tr class="mini_calendar_head_dname">
<td>
<?php echo implode('</td><td>', $this->dayNameArray);?></td>
</tr>
</thead>
<tfoot class="mini_calendar_foot">
<tr>
<th><a href='#'></a></th>
<th colspan='5' ></th>
<th><a href='#'></a></th>
</tr>
</tfoot>
<tbody id="mini_calendar_body">
<?php while($curDay <= $this->totalDay): ?>
<tr>
<?php for($i=0; $i<7; $i++):?>
<?php if(($curDay == 1 && $i < $this->firstDayOfMonth) || ($curDay > $this->totalDay)): ?>
<td class="mini_calendar_body_blank"> </td>
<?php continue; ?>
<?php endif; ?>
<td class="mini_calendar_body_data"><a href='
<?php echo $this->url(array('controller'=>'terminy', 't'=>mktime
(0
, 0
, 0
, $this->month, $curDay, $this->year)));?>'>
<?php echo $curDay; ?></a></td>
<?php $curDay++; ?>
<?php endfor; ?>
</tr>
<?php endwhile; ?>
</tbody>
</table>
Chcę uprościć widok w kalendarzu.
Wzorując się na mojej wcześniejszej wersji
stworzyłem model:
public function miniCalendar($totalDay, $firstDayOfMonth, $month, $year)
{
$curDay = 1;
while($curDay <= $totalDay)
{
'mktime' => mktime(0
, 0
, 0
, $month, $curDay, $year), 'day' => $curDay,
'blank_day' => 0
);
$curDay++;
}
return $dayArray;
}
W kontrolerze:
// Te parametry co wyżej w kontrolerze +
$this->view->miniCalendar = $term->miniCalendar($this->view->totalDay, $this->view->firstDayOfMonth, $this->view->month, $this->view->year);
Widok(Z tym mam problem):
<table>
<tr><td>Nd</td><td>Pn</td><td>Wt</td><td>Sr</td><td>Czw</td><td>Pt</td><td>Sb</td></tr>
<?php foreach ($this->miniCalendar as $i=>$calendar):?>
<td>
<?php echo $calendar['day']; ?></td>
<?php if($i==6 || $i==13 || $i==20 || $i==27):?>
<tr>
<?php endif;?>
<?php endforeach;?>
</table>
Nie umiem sobie poradzić z rozpoczęciem dnia od danego dnia tygodnia.
Np w następnym miesiącu zaczynamy miesiąc od środy, czyli Nd, Pn, Wt musi być <td> </td>
Proszę o pomoc w widoku, już sam się zapętlam i nie umiem iść z tym do przodu.
Pozdrawiam,
Tomasz Solik
Ten post edytował tomsol 17.01.2012, 19:52:30