After click on search button get the mobile number and hit database. if result not null then this fname,lname....all field open with fill form like update form but if result not get it will be open empty.... For that I am write one function on search button this button get mobile number and call one method which in my shipment controller create method using ajax.and in create i get a mobile number and as per result check condition..
public function actionCreate()
{
if(isset($_POST['mobilenumber'])) {
//$modelArray = Customers::find()->where(['cust_mobile' => $_POST['mobilenumber']])->one();
$connection = \Yii::$app->getDb();
$command = $connection->createCommand(
"SELECT * ".
"FROM customers AS C ".
"WHERE C.cust_mobile= " .$_POST['mobilenumber']
// "AND C.cust_mobile=" .$_POST['mobilenumber2']
);
$modelArray = $command->queryAll();
if(count($modelArray) > 0) {
print_r(json_encode($modelArray));
/*Here I wanna set data which is comming from response i.e in object($modelArray)
on same form i.e is like a update form i.e here update logic i want to apply*/
} else {
/*Here new record is create if enter mobile number is not exist*/
}
} else {
/*open form if mobile number not set*/
}
}
Form of add Shipment(shipment/_form.php) And In shipment form create button this fname,laname,address all detail save into customer table with shipment id
<script type="text/javascript">
function searchResult() {
var mobilenumber = document.getElementById('customers-cust_mobile').value;
$.ajax({
type: "POST",
data: {
mobilenumber: mobilenumber,
},
dataType: "json",
url: "index.php?r=shipment/create",
success: function(data){
$('#customers-cust_fname').val(data[0].cust_fname);
$('#customers-cust_mname').val(data[0].cust_mname);
$('#customers-cust_lname').val(data[0].cust_lname);
$('#customers-cust_email').val(data[0].cust_email);
$('#customers-cust_street').val(data[0].cust_street);
$('#customers-cust_address').val(data[0].cust_address);
}
});
}
</script>
<?= $form->field($modelCustomersSender, 'cust_mobile')->textInput(['maxlength' => true]) ?>
<?= $form->field($modelCustomersSender, 'cust_fname')->textInput(['maxlength' => true]) ?>
<?= $form->field($modelCustomersSender, 'cust_mname')->textInput(['maxlength' => true]) ?>
<?= $form->field($modelCustomersSender, 'cust_lname')->textInput(['maxlength' => true]) ?>
in your code there are a number of non-recommended practices. for example the fact to directly access the $ _POST instead of creating a suitable model and load the values with model-> load or the failure to use the rendering of views to make a ajax action for Update Your data .. in any case the discussion for every aspect would be too long so I give you the code available in the way that I think is closer to the way you write.
You action create could be somethings like this
public function actionCreate()
{
if(isset($_POST['mobilenumber'])) {
$modelArray = Customers::find()->where(['cust_mobile' => $_POST['mobilenumber']])->one();
/*Here I got object in which whatever mobile number we enter
in text box. as per mobile number i got result and I check a condition is, if result count grater than 0 then
form open with fill text field else open with empty field */
if(count($modelArray) > 0) {
$
/*Here I wanna set data which is comming from response i.e in object($modelArray)
on same form i.e is like a update form i.e here update logic i want to apply*/
$modelArray->attribute1 = $_POST['your_attribute1'];
......
$newModel->attributeN = $_POST['your_attributeN'];
$newModel->save()
// redirect or render what you prefer
return $this->redirect(['the_view_you_prefer']);
} else {
/*Here new record is create if enter mobile number is not exist*/
$newModel = new Customers();
$newModel->mobilenumber = $_POST['mobilenumber']
$newModel->attribute1 = $_POST['your_attribute1'];
......
$newModel->attributeN = $_POST['your_attributeN'];
$newModel->save()
return $this->redirect(['the_view_you_prefer']);
}
} else {
/*open form if mobile number not set*/
}
}
Otherwise if you only want render the value for ajax you can
myArray['your_attribute1'] = $_POST['your_attribute1'];
....
myArray['your_attributeN'] = $_POST['your_attributeN'];
$arrayToAjax= json_encode($myArray);
echo $arrayToAjax;
This should return the json formatted result for your ajax success function
for retrive the data in success function you can use jsonParse
success: function(data){
alert(data);//response display here
var jsonData = JSON.parse(data);
alert(jsonData[0].cust_fname);
alert(jsonData[0].cust_lname);
$('customers-cust_lname').val(data);//how to set value fot that text field from response
// window.location.reload(true);
}