Projekt z wykorzystaniem yii2 - część VIII.
W poprzedniej części utworzyliśmy stronę początkową menu, która daje możliwość klientowi wyboru działu który go interesuje. Teraz musimy dostarczyć żądane informacje. Będziemy więc operowali na zawartości tabeli menu. Pomoże nam w tym parametr przekazany poprzez link umieszczony w pliku index.php (views/menu-kategorii). Generalnie wykonamy zapytanie do bazy: SELECT * FROM menu WHERE kategoria_potrawy = id;.
Yii daje kilka możliwości wykonania takiego zapytania. Najprostszym rozwiązaniem byłoby w kontrolerze w kolejnej akcji umieszczenie takiego zapisu:
$potrawy = Yii::$app->db->createCommand('SELECT * FROM menu WHERE kategoria_potrawy = $id ')->queryAll();
Inną możliwością jest dodanie metody w klasie Menu (models/Menu.php) o następującej treści:
public function potrawy($id){
$potrawy = Yii::$app->db->createCommand('SELECT *FROM menu WHERE kategoria_potrawy=:id')
->bindValue(':id', $id)
->queryAll();
return $potrawy;
}
A następnie w kontrolerze MenuKategoriiController w akcji actionPotrawy dodajemy kod:
public function actionPotrawy($id){
$potrawy = new Menu;
$pr =$potrawy->potrawy($id);
return $this->render('potrawy',['pr'=>$pr])
Jednak my wykorzystamy inną możliwość i utworzymy następującą akcję w kontrolerze MenuKategoriiController (controllers/MenuKategoriiController.php):
public function actionPotrawy($id){
$potrawy = Menu::find()->where(['kategoria_potrawy'=>$id])->all();
return $this->render('potrawy',['potrawy'=>$potrawy]);
}
Teraz pozostaje nam tylko utworzyć odpowiedni widok o nazwie potrawy.php w lokalizacji view/menu-kategorii. Plik posiada następującą zawartość:
<table class="table">
<tr>
<th>Nazwa</th>
<th>Składniki</th>
<th>Ilość</th>
<th>Cena</th>
</tr>
<?php foreach($potrawy as $potrawa){ ?>
<tr>
<td><?php echo $potrawa['nazwa_potrawy'] ?></td>
<td><?php echo $potrawa['skladniki_potrawy'] ?></td>
<td><?php echo $potrawa['gramatura'] ?></td>
<td><?php echo Yii::$app->formatter->asCurrency($potrawa['cena'], 'PLN') ?></td>
</tr>
<?php } ?>
</table>
Jeżeli wykonałeś następujące operacje powinieneś ujrzeć taki efekt jak poniżej. Przy założeniu, że dodałeś jakieś rekordy do bazy danych.
Utworzone pliki można zobaczyć na githubie pod adresem projektu: Projekt: Menu
Tabela menu.
Menu - dział zupy.
2017-11-30 Ator: bronco-one
Projekt z wykorzystaniem yii2 - część VIII.
W poprzedniej części utworzyliśmy stronę początkową menu, która daje możliwość klientowi wyboru działu który go interesuje. Teraz musimy dostarczyć żądane informacje. Będziemy więc operowali na zawartości tabeli menu. Pomoże nam w tym parametr przekazany poprzez link umieszczony w pliku index.php (views/menu-kategorii). Generalnie wykonamy zapytanie do bazy: SELECT * FROM menu WHERE kategoria_potrawy = id;.
Yii daje kilka możliwości wykonania takiego zapytania. Najprostszym rozwiązaniem byłoby w kontrolerze w kolejnej akcji umieszczenie takiego zapisu:
$potrawy = Yii::$app->db->createCommand('SELECT * FROM menu WHERE kategoria_potrawy = $id ')->queryAll();
Inną możliwością jest dodanie metody w klasie Menu (models/Menu.php) o następującej treści:
public function potrawy($id){
$potrawy = Yii::$app->db->createCommand('SELECT *FROM menu WHERE kategoria_potrawy=:id')
->bindValue(':id', $id)
->queryAll();
return $potrawy;
}
A następnie w kontrolerze MenuKategoriiController w akcji actionPotrawy dodajemy kod:
public function actionPotrawy($id){
$potrawy = new Menu;
$pr =$potrawy->potrawy($id);
return $this->render('potrawy',['pr'=>$pr])
Jednak my wykorzystamy inną możliwość i utworzymy następującą akcję w kontrolerze MenuKategoriiController (controllers/MenuKategoriiController.php):
public function actionPotrawy($id){
$potrawy = Menu::find()->where(['kategoria_potrawy'=>$id])->all();
return $this->render('potrawy',['potrawy'=>$potrawy]);
}
Teraz pozostaje nam tylko utworzyć odpowiedni widok o nazwie potrawy.php w lokalizacji view/menu-kategorii. Plik posiada następującą zawartość:
<table class="table">
<tr>
<th>Nazwa</th>
<th>Składniki</th>
<th>Ilość</th>
<th>Cena</th>
</tr>
<?php foreach($potrawy as $potrawa){ ?>
<tr>
<td><?php echo $potrawa['nazwa_potrawy'] ?></td>
<td><?php echo $potrawa['skladniki_potrawy'] ?></td>
<td><?php echo $potrawa['gramatura'] ?></td>
<td><?php echo Yii::$app->formatter->asCurrency($potrawa['cena'], 'PLN') ?></td>
</tr>
<?php } ?>
</table>
Jeżeli wykonałeś następujące operacje powinieneś ujrzeć taki efekt jak poniżej. Przy założeniu, że dodałeś jakieś rekordy do bazy danych.
Utworzone pliki można zobaczyć na githubie pod adresem projektu: Projekt: Menu

Tabela menu.

Menu - dział zupy.
2017-11-30 Ator: bronco-one