Als Webentwickler ist das Erlernen und Üben der Verwendung des PHP-Frameworks zweifellos unerlässlich. Unter vielen PHP-Frameworks ist das Yii-Framework ein effizientes, elegantes und sicheres Framework mit einer breiten Benutzerbasis.
In diesem Artikel werde ich erläutern, wie Sie mit dem Yii-Framework eine einfache Online-Einkaufszentrumsanwendung erstellen. Die Anwendung verfügt über grundlegende Mall-Funktionen wie Benutzerverwaltung, Produktverwaltung und Warenkorbfunktionen. Diese Anwendung kann als Einführungsübung für Anfänger zum Erlernen des Yii-Frameworks verwendet werden.
Installieren Sie das Yii-Framework
Bevor wir mit der Verwendung des Yii-Frameworks beginnen, müssen wir zunächst das Framework installieren. Das Yii-Framework bietet mehrere Installationsmethoden. Die häufigste Methode ist die Installation mit Composer. Vor der Installation müssen wir bestätigen, dass Composer installiert ist.
Wir können den folgenden Befehl verwenden, um das Yii-Framework zu installieren:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
Der obige Befehl erstellt eine Basisanwendung. Sie können überprüfen, ob das Yii-Framework erfolgreich installiert wurde, indem Sie http://localhost/basic besuchen.
Datentabellenentwurf und Datenfüllung
Bevor wir eine Online-Einkaufszentrumsanwendung erstellen, müssen wir eine Datentabelle für das Einkaufszentrum erstellen und die Daten ausfüllen. In diesem Artikel wird MySQL als Datenbank verwendet und die folgenden Datentabellen erstellt:
Das Hinzufügen geeigneter Indizes zu den oben genannten Datentabellen kann die Abfrageeffizienz verbessern.
Das Folgende ist die SQL-Anweisung zur Tabellenerstellung für die obige Datentabelle:
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `email` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `product` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `price` float(10,2) NOT NULL, `description` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `order` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `product_id` int(11) NOT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `product_id` (`product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `cart` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `product_id` int(11) NOT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `user_id` (`user_id`), KEY `product_id` (`product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Jetzt müssen wir die Daten eingeben, um die Anwendung zu testen. Fügen Sie mindestens einen Benutzerdatensatz zur Benutzertabelle und mindestens einen Produktdatensatz zur Produkttabelle hinzu. Wir werden diesen Benutzer und dieses Produkt als Testdaten für den Rest dieses Artikels verwenden.
Erstellen eines Benutzercontrollers
Wir beginnen mit der Erstellung eines Benutzercontrollers. Im Yii-Framework sind Controller die Kernkomponenten, die Anwendungsanfragen verarbeiten. Der Controller ist dafür verantwortlich, den Anforderungstyp zu erkennen und die Antwortoperationsmethode basierend auf der Anforderung aufzurufen.
Jetzt erstellen wir den UserController und fügen grundlegende Aktionsmethoden hinzu. Wir werden die Erweiterung yiiwebController verwenden, um den Controller zu erstellen.
In Yii wird dem Namen der Controller-Klasse normalerweise das Suffix Controller hinzugefügt, wodurch die von der Klasse implementierten Funktionen besser beschrieben werden können. Unten ist der Basiscode der UserController-Klasse:
<?php namespace appcontrollers; use yiiwebController; class UserController extends Controller { public function actionIndex() { return $this->render('index'); } public function actionLogin() { // code for login logic } public function actionRegister() { // code for registration logic } }
Im obigen Code haben wir drei grundlegende Operationsmethoden hinzugefügt. Die Methode actionIndex() rendert die Ansichtsdatei index.php. Dies ist der Standardname der Aktionsmethode. Die Methoden actionLogin() und actionRegister() werden für die Benutzeranmeldung und -registrierung verwendet.
Jetzt müssen wir die Ansichtsdatei index.php erstellen. Ansichtsdateien sind die Ausgabe von Aktionsmethoden im Controller. Wir verwenden die vom Yii-Framework bereitgestellte Methode Yii::$app->view->render(), um die Ansicht zu rendern.
Erstellen Sie die Datei index.php im Ordner „views/user“ und fügen Sie den folgenden Code hinzu:
<?php use yiihelpersHtml; $this->title = 'User'; $this->params['breadcrumbs'][] = $this->title; ?> <h1><?= Html::encode($this->title) ?></h1> <p> Welcome to the user homepage. </p>
Der obige Code zeigt eine einfache Willkommensnachricht im Browser an.
Erstellen des Produktcontrollers und der Produktansicht
Jetzt fahren wir mit der Erstellung des Produktcontrollers und der Produktansicht fort. Wir werden die Erweiterung yiidataActiveDataProvider verwenden, um die Produktlistendaten abzurufen.
Erstellen Sie den ProductController-Controller und fügen Sie die folgende Aktionsmethode hinzu:
<?php namespace appcontrollers; use yiiwebController; use appmodelsProduct; use yiidataActiveDataProvider; class ProductController extends Controller { public function actionIndex() { $dataProvider = new ActiveDataProvider([ 'query' => Product::find(), ]); return $this->render('index', [ 'dataProvider' => $dataProvider, ]); } public function actionAddtocart($id) { // code for add to cart logic } }
Wie im Code gezeigt, verwenden wir zuerst Product::find(), um alle Produkte abzurufen. Anschließend legen wir die Produktlistendaten in einem ActiveDataProvider ab und übergeben sie an die Ansicht. Anschließend erstellen wir die Methode actionAddtocart() zum Hinzufügen von Artikeln zum Warenkorb.
Wir müssen den Produktordner und die Ansichtsdatei index.php unter diesem Ordner erstellen. Wir verwenden ein GridView-Widget, das eine Liste von Produkten basierend auf den vom dataProvider bereitgestellten Daten rendert. Wir fügen auch eine Schaltfläche zum Hinzufügen von Produkten zum Warenkorb hinzu.
Das Folgende ist der Code der Datei „views/product/index.php“:
<?php use yiihelpersHtml; use yiigridGridView; $this->title = 'Product'; $this->params['breadcrumbs'][] = $this->title; ?> <h1><?= Html::encode($this->title) ?></h1> <?= GridView::widget([ 'dataProvider' => $dataProvider, 'columns' => [ 'id', 'name', 'price', 'description', [ 'class' => 'yiigridActionColumn', 'buttons' => [ 'addtocart' => function ($url, $model) { return Html::a('Add to cart', ['product/addtocart', 'id' => $model->id]); } ], 'template' => '{addtocart}', ], ], ]); ?>
Jetzt können wir http://localhost/basic/product/index im Browser besuchen, um zu überprüfen, ob die Ansicht korrekt gerendert wird.
Erstellen Sie einen Warenkorb-Controller und eine Einkaufswagen-Ansicht
Wir benötigen einen Einkaufswagen-Controller und eine Einkaufswagen-Ansicht, um die Artikel zu verwalten, die dem Einkaufswagen im Einkaufszentrum hinzugefügt werden. Wir verwenden die Sitzung, um Warenkorbdaten zu speichern.
Wir erstellen den CartController-Controller und fügen die folgende Aktionsmethode hinzu:
<?php namespace appcontrollers; use yiiwebController; use Yii; class CartController extends Controller { public function actionIndex() { $cart = Yii::$app->session->get('cart'); return $this->render('index', [ 'cart' => $cart, ]); } public function actionAdd($id) { // code for add product to cart logic } public function actionRemove($id) { // code for remove product from cart logic } }
Im obigen Code erhalten wir zunächst die in der Sitzung gespeicherten Warenkorbdaten. In der Methode actionAdd($id) legen wir das Produkt mit der angegebenen ID-Nummer in den Warenkorb. In der Methode actionRemove($id) entfernen wir den Artikel mit der angegebenen ID-Nummer aus dem Warenkorb.
Als nächstes müssen wir den Warenkorbordner und die Ansichtsdatei index.php unter diesem Ordner erstellen. Wir verwenden das ListView-Widget, das die Warenkorbliste basierend auf den in der Sitzung gespeicherten Warenkorbdaten rendert. Wir haben auch einige Schaltflächen hinzugefügt, um die Anzahl der Artikel im Warenkorb zu erhöhen oder zu verringern oder Artikel aus dem Warenkorb zu entfernen.
Das Folgende ist der Code der Datei „views/cart/index.php“:
<?php use yiihelpersHtml; use yiiwidgetsListView; $this->title = 'Shopping Cart'; $this->params['breadcrumbs'][] = $this->title; ?> <h1><?= Html::encode($this->title) ?></h1> <?= ListView::widget([ 'dataProvider' => $dataProvider, 'itemView' => '_cart_item', 'emptyText' => 'Your cart is empty.', ]) ?>
在views/cart文件夹下创建_cart_item.php视图文件,该文件将被用于渲染购物车列表中的每一行。以下是views/cart/_cart_item.php文件的代码:
<?php use yiihelpersHtml; use yiiwidgetsActiveForm; $form = ActiveForm::begin([ 'id' => 'cart-item-' . $model['id'], ]); ?> <?= Html::a('Remove', ['cart/remove', 'id' => $model['id']]) ?> <?= $model['name'] ?> <?= $form->field($model, 'quantity')->textInput(['value' => $model['quantity']]) ?> <?= Html::submitButton('Update') ?> <?php ActiveForm::end(); ?>
以上代码将会在浏览器中显示购物车列表,用户可以在该列表中执行增加或减少商品数量的操作,也可以删除购物车中已有商品。
完成在线商城应用程序
现在,我们已经完成了基础的在线商城应用程序,该应用程序拥有用户管理,产品管理和购物车等基础功能。该应用程序可以作为初学者学习和实践Yii框架的入门实践。当然,在实际应用中,我们仍需要添加更多功能来满足商城的需求。
Das obige ist der detaillierte Inhalt vonErstellen Sie einen Online-Shop mit dem Yii-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!