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

147 lines
5.5 KiB
Plaintext

Widok
====
Widok jest skryptem PHP zawierającym przede wszystkim elementy interfejsu użytkownika.
Może on zawierać wyrażenia PHP, ale rekomendowane jest, aby te wyrażenia
nie zmieniały danych modelu oraz były w miarę proste. W duchu rozdzielania
logiki i prezentacji, duże porcje logiki powinny zostać umieszczone w kontrolerze
lub modelu zamiast w widoku.
Widok posiada nazwę, która jest używana do zidentyfikowania pliku skryptu widoku
podczas generowania. Nazwa widoku to ta sama nazwa co nazwa pliku skryptu zawierającego
widok. Na przykład, widok `edit` odnosi się do pliku skryptu widoku nazwanego
`edit.php`. Aby wygenerować widok wywołaj metodę [CController::render()] wraz
z nazwą widoku. Metoda ta będzie szukała odpowiadającego widokowi pliku w katalogu
`protected/views/ControllerID`.
Wewnątrz skryptu widoku mamy dostęp do instancji kontrolera poprzez `$this`.
Możemy w ten sposób `przeciągnąć` każdą właściwość kontrolera do widoku poprzez
wywołanie `$this->nazwaWłaściwości`.
Możemy również użyć podejścia `pchnij` do przekazania danych do wyświetlenia:
~~~
[php]
$this->render('edit', array(
'var1'=>$value1,
'var2'=>$value2,
));
~~~
W powyższym kodzie, metoda [render()|CController::render] rozkoduje drugi parametr
tablicy do zmiennych. W rezultacie, w skrypcie widoku uzyskamy dostęp do zmiennych
lokalnych `$var1` oraz `$var2`.
Układ (ang. Layout)
------
Układ jest specjalnym widokiem, który jest używany do dekorowania widoku.
Zazwyczaj zawiera porcję interfejsu użytkownika, która jest wspólna dla różnych
widoków. Na przykład, widok może zawierać część nagłówkową i stopkę oraz osadzać
zawartość widoku pomiędzy nimi,
~~~
[php]
......nagłówek......
<?php echo $content; ?>
......stopka......
~~~
gdzie `$content` przechowuje wynik generowania zawartości widoku.
Widok jest domyślnie stosowany podczas wołania metody [render()|CController::render].
Domyślnie, skrypt widoku `protected/views/layouts/main.php` jest używany jako widok.
Można to zmienić poprzez zmianę wartości [CWebApplication::layout] lub [CController::layout].
Aby wygenerować widok bez korzystania z żadnego widoku wywołaj w zamian metodę
[renderPartial()|CController::renderPartial].
Widżety (ang. Widget)
------
Widżet jest instancją klasy [CWidget] lub jej klas pochodnych. Jest komponentem
stosowanym dla celów prezentacji. Widżety są zazwyczaj osadzane w skrypcie w celu
generowania pewnych skomplikowanych, samowystarczalnych (niezależnych)
interfejsów użytkownika. Na przykład, widżet kalendarza może być używany do wygenerowania
skomplikowanego interfejsu użytkownika dla kalendarza. Widżety umożliwiają
lepsze ponowne wykorzystanie kodu w interfejsie użytkownika.
Aby użyć widżetu, zrób co następuje w skrypcie widoku:
~~~
[php]
<?php $this->beginWidget('path.to.WidgetClass'); ?>
...zawartość, która może zostać uwzględniona przez widżet...
<?php $this->endWidget(); ?>
~~~
lub
~~~
[php]
<?php $this->widget('ścieżka.do.klasy.widżetu'); ?>
~~~
Drugie podejście jest używane kiedy widżet nie potrzebuje żadnej zawartości.
Widżety można skonfigurować, tak by zmienić ich zachowanie. Można to zrobić poprzez
ustawienie wartości ich początkowych właściwości podczas wywołania [CBaseController::beginWidget]
lub [CBaseController::widget]. Na przykład, podczas używania widżetu [CMaskedTextField],
chcielibyśmy określić używaną maskę. Możemy to zrobić przez przekazywanie tablicy
początkowych wartości właściwości, w której kluczami są nazwy właściwości a wartościami
inicjalne wartości tych właściwości, w następujący sposób:
~~~
[php]
<?php
$this->widget('CMaskedTextField',array(
'mask'=>'99/99/9999'
));
?>
~~~
Aby zdefiniować nowy widżet, rozszerz klasę [CWidget] oraz nadpisz jej metody
[init()|CWidget::init] oraz [run()|CWidget::run]:
~~~
[php]
class MyWidget extends CWidget
{
public function init()
{
// jest to metoda wołana przez CController::beginWidget()
}
public function run()
{
// jest to metoda wołana przez CController::endWidget()
}
}
~~~
Tak jak w kontrolerze, widżet może mieć swój własny widok. Domyślnie, pliki widoku
widżetu są umieszczone w podkatalogu `views` katalogu zawierającego klasę widżetu.
Widoki te mogą być renderowane poprzez wywołanie [CWidget::render()], w sposób podobny
do tego w kontrolerze. Jedyną różnicą jest to, że żaden układ nie będzie używany
dla widoku widżetu. Ponadto, `$this` w widoku, wskazuje na instancję widżetu zamiast
na instancję kontrolera.
Widok systemowy (ang. System View)
-----------
Widok systemowy odpowiada widokowi używanemu w Yii do wyświetlania błędów oraz
logowania informacji. Na przykład, kiedy użytkownik żąda dostępu do nieistniejącego
kontrolera lub akcji, Yii rzuci wyjątkiem wyjaśniającym błąd. Wyświetli ten wyjątek
przy użyciu określonego widoku systemowego.
Nazywanie widoków systemowych podlega pewnym regułom. Nazwy takie jak `errorXXX`
odpowiadają widokom do wyświetlania wyjątków [CHttpException] dla kodu błędu `XXX`.
Na przykład, jeśli wywołany jejs wyjątek [CHttpException] o kodzie błędu 404,
wtedy błąd `error404` będzie wyświetlony.
Yii dostarcza zestawu domyślnych widoków systemowych umieszczonych w folderze
`framework/views`. Mogą one zostać zmienione poprzez utworzenie tak samo nazwanych
plików widoku w folderze `protected/views/system`.
<div class="revision">$Id: basics.view.txt 2367 2010-08-29 17:29:22Z qiang.xue $</div>