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

 


images

Tabela menu.



images

Menu - dział zupy.



2017-11-30   Ator: bronco-one

Kategoria:   yii   php  


Ta strona używa plików cookies.    Nota prawna    Zarządzanie plikami cookies    AKCEPTUJĘ