user3064038
user3064038

Reputation: 55

Getting the textbox value

I'm really new to Yii and as a starter, I want to know how to get the value from the textbox when the button is pressed.

<?php CHtml::textField($name,$value,array('submit'=>'')); ?>

<?php echo CHtml::submitButton('Greet!',array(
             'submit' => 'message/goodbye')); ?>

Upvotes: 0

Views: 2043

Answers (2)

Sankalp Singha
Sankalp Singha

Reputation: 4546

UNDERSTANDING THE BASIC CONCEPT

You have to remember that Yii is an MVC framework ( Model, View Controller ) and the best practice is to keep the entire structure like so. The best way to learn it is from the awesome forum that they have.

Hence, to define a scenario where you would like to save a data/textbox from the form, you would be following the following workflow :

A BASIC WORKFLOW

Assuming that you don't want to save the data in the Database. :

I would be assuming that a basic knowledge of the how the framework works is known. You can check out the guide and the other tutorials if not.

This is a basic workflow in which the data would be taken from the form and validated in the model.

  1. Create a model file in your protected/models folder

Example : Lets name this file as FormData.php

<?php

class FormData extends CFormModel{
    public $name;
    public $email;


    public function rules()
    {
        return array(
            array('name , email','required'), // This rule would make it compulsory for the data to be added.
            array('email','email'), // This will check if the email matches the email criteria.
        );
    }

    public function attributeLabels()
    {
        return array(
            'name' => 'Enter your name',
            'email' => 'Enter your email',
        );
    }

}

?>

2. After this , in your protected/FormController.php

Add this :

<?php

class Formdata extends CController{
    public function actionCoolForm()
    {
        $model = new FormData();
        if(isset($_POST['FormData'])){
            $model->attributes = $_POST['FormData'];
            if($model->validate()){
                // Do whatever you want to do here.
            }
        }

        $this->render('someview',array('model'=>$model));
    }
}
?>

3. Now to add the form in your page is easy :

<?php echo CHtml::form('formdata/coolform','post'); ?>

<?php 

echo CHtml::activeTextField($model,'name');
echo CHtml::activeTextField($model,'email');

?>

<?php echo CHtml::endForm(); ?>

Now to add it in the database

The best and the easiest method of adding it in the database is to use the Gii. But the code is nearly identical, except that the model extends CModel.

I hope that I was able to help.

Upvotes: 1

Hearaman
Hearaman

Reputation: 8726

Keep your view some thing like

        <?php
        $form = $this->beginWidget('CActiveForm', array(
            'id' => 'aForm',
            'htmlOptions' => array('onsubmit'=>"return false;"),
                ));
        ?>
            <?php echo CHtml::textField('name', 'value'); ?>
            <?php echo CHtml::submitButton('Greet!', array('onclick' => 'getValue()'));?>
        <?php $this->endWidget(); ?>

And the Action Script for the onclick event is

        <script type="text/javascript">
            function getValue()
            {
                $text=$("#aForm").find('input[name="name"]').val();
                alert($text);
                //$formData=$("#aForm").serialize();
            }
        </script>

Upvotes: 2

Related Questions