Yii framework is a popular PHP framework that is widely used for web application development. The framework provides a wealth of features and tools, one of the most important features is forms. In this article, we will explore forms in the Yii framework, including how to build user interaction interfaces.
What is a form?
In web applications, a form is an interface element that allows users to enter or submit data. Typically, a form contains a series of input fields, such as text boxes, drop-down lists, radio buttons, and check boxes. When a user fills out a form and submits it, this data is typically sent to the server for processing.
Forms in Yii framework
Yii framework provides multiple ways to build forms. Among them, the most commonly used is to use Active Form provided by Yii. Active Form is a core class of Yii that can generate forms quickly and efficiently. When using Active Form, we can generate forms through Yii's Model class and Active Record model class.
Use Yii's Model class to generate a form
When using Yii's Model class to generate a form, we need to first create a new Model class, and then define the properties corresponding to each field of the form. For example:
class ContactForm extends yiiaseModel { public $name; public $email; public $subject; public $body; public function rules() { return [ [['name', 'email', 'subject', 'body'], 'required'], ['email', 'email'], ]; } }
In this example, we define four attributes: name, email address, subject, and body, and use the rules() method to define the rules. These rules can be used to validate user input data.
Next, we can use Active Form to generate a new form:
<?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'name') ?> <?= $form->field($model, 'email') ?> <?= $form->field($model, 'subject') ?> <?= $form->field($model, 'body')->textarea(['rows' => 6]) ?> <div class="form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?>
In this example, we use the begin() and end() methods of Active Form, and then use $ The field method generates input fields for each attribute. Finally, we added a submit button.
Use Active Record model classes to generate forms
Using Active Record model classes can also quickly build forms. Active Record is a class used by the Yii framework to operate the database. It can define a model attribute for each field in the table.
For example, we have a Users table, which contains id, username and email fields. We can use Yii's Active Record to generate a new model class:
class UserForm extends yiidbActiveRecord { public static function tableName() { return 'Users'; } public function rules() { return [ [['username', 'email'], 'required'], ['email', 'email'], ]; } }
In this example, we define a tableName() method to indicate which database table to use. We can then do any usual Active Record operations on this class.
To build a form using Active Form, we can use the following code:
<?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'username') ?> <?= $form->field($model, 'email') ?> <div class="form-group"> <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?> </div> <?php ActiveForm::end(); ?>
In this example, we use the begin() and end() methods of Active Form, and then use the $field method Generate input fields for each attribute. We also added a submit button.
Conclusion
The form in the Yii framework is an important tool for building user interaction interfaces. Whether you use Yii's Model class or Active Record model class, you can quickly and effectively generate rich forms. In addition to the input fields in the above examples, the Yii framework also provides various other input field options, such as file upload, date selection, password input boxes, etc. If you want to know more about the Yii framework and forms, you can check out the Yii documentation or official website.
The above is the detailed content of Forms in the Yii framework: building user interaction interfaces. For more information, please follow other related articles on the PHP Chinese website!