Getting Data from Users
Content of the «Getting Data from Users» section:
- Creating Forms
- Validating Input
- Uploading Files
- Collecting Tabular Input
- Getting Data for Multiple Models
- Extending ActiveForm on the Client Side
Articles section «Getting Data from Users»:
Extending ActiveForm on the Client Side
Getting Data for Multiple Models
When dealing with some complex data, it is possible that you may need to use multiple different models to collect the user input. For example, assuming the user login information is stored in the
user table while the user profile information is stored in the
profile table, you may want to collect the input data about a user through a
User model and a
Profile model. With the Yii model and form support, you can solve this problem in a way that is not much different from handling a single model.
Collecting tabular input
Sometimes you need to handle multiple models of the same kind in a single form. For example, multiple settings, where each setting is stored as a name-value pair and is represented by a
Setting active record model. This kind of form is also often referred to as "tabular input". In contrast to this, handling different models of different kind, is handled in the section Complex Forms with Multiple Models.
Uploading files in Yii is usually done with the help of [[yii\web\UploadedFile]] which encapsulates each uploaded file as an
UploadedFile object. Combined with [[yii\widgets\ActiveForm]] and models, you can easily implement a secure file uploading mechanism.
As a rule of thumb, you should never trust the data received from end users and should always validate it before putting it to good use.
Given a model populated with user inputs, you can validate the inputs by calling the [[yii\base\Model::validate()]] method. The method will return a boolean value indicating whether the validation succeeded or not. If not, you may get the error messages from the [[yii\base\Model::errors]] property. For example,
- ActiveRecord based forms: ActiveForm
- Creating Lists
- Working with Pjax
- Further Reading