2016-08-05 7 views
1

Ich versuche, eine Textbox (Kundenname, CustomerAddress, customerMobileno) automatisch ausfüllen, wenn eine Dropdown-Liste (customerid) ausgewählt ist. Die Kunden-ID ist erfolgreich ausgewählt, aber etwas schief läuft Die Controller-Aktion wird abgerufen. Ich bekomme 404 error.I möchte erwähnen, dass ich prettyurl verwende, wie hier gesagt - Yii2. Access to higher level folder.404 Nicht in abhängiger Textbox in select2 Widget in yii2

In firebug Ich erhalte den folgenden fehler-

GET http://localhost:8080/amitopticals/debug/default/toolbar?tag=57a4b1623a201 

200 OK 
     90ms  
create (line 545) 
GET http://localhost:8080/amitopticals/orders/orders/....php?r=orders/customer/get-for-customer&custid=2 

404 Not Found 
     10ms  
jquery.js (line 9175) 
ParamsHeadersResponseHTMLCookies 

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
<head> 
<title>Object not found!</title> 
<link rev="made" href="mailto:[email protected]" /> 
<style type="text/css"><!--/*--><![CDATA[/*><!--*/ 
    body { color: #000000; background-color: #FFFFFF; } 
    a:link { color: #0000CC; } 
    p, address {margin-left: 3em;} 
    span {font-size: smaller;} 
/*]]>*/--></style> 
</head> 

<body> 
<h1>Object not found!</h1> 
<p> 


    The requested URL was not found on this server. 



    The link on the 
    <a href="http://localhost:8080/amitopticals/orders/orders/create">referring 
    page</a> seems to be wrong or outdated. Please inform the author of 
    <a href="http://localhost:8080/amitopticals/orders/orders/create">that page</a> 
    about the error. 



</p> 
<p> 
If you think this is a server error, please contact 
the <a href="mailto:[email protected]">webmaster</a>. 

</p> 

<h2>Error 404</h2> 
<address> 
    <a href="/">localhost</a><br /> 
    <span>Apache/2.4.16 (Win32) OpenSSL/1.0.1p PHP/5.6.12</span> 
</address> 
</body> 
</html> 

-Code meines select2 Widget und verwandte Javascript -

<?= $form->field($model, 'o_customerid')->widget(Select2::classname(), [ 
        'data' => ArrayHelper::map(Customer::find()->all(),'c_id','customerDetails'), 
        'language' => 'en', 
        'options' => ['placeholder' => 'Select Customer Details', 'id' => 'custid'], 
        'pluginOptions' => [ 
         'allowClear' => true 
        ], 
        ]); 
       ?> 
<?php 
$script = <<< JS 
$('#custid').change(function(){ 
    var custid = $(this).val(); 

    $.get('index.php?r=orders/customer/get-for-customer',{ custid : custid }, function(data){ 
     alert(data); 
     var data = $.parseJSON(data); 
     $('#orders-o_customername').attr('value',data.c_name); 
     $('#orders-o_customeraddress').attr('value',data.c_address); 
     $('#orders-o_customermobno').attr('value',data.c_mobileno); 
    }); 
}); 
JS; 
$this->registerJs($script); 
?> 

Controller Aktion in CustomerController -

public function actionGetForCustomer($custid) 
    { 
     $customer = Customer::find()->where(['c_id'=>$custid])->asArray()->one(); 
     echo Json::encode($customer); 
    } 

Antwort

1

Wenn Sie verwenden eine hübsche URL. Ihre resultierende URL sollte

lauten
://localhost:8080/amitopticals/orders/customer/get-for-customer?custid=2 

anstelle des resultierenden in Sie Message-Header

://localhost:8080/amitopticals/orders/orders/....php?r=orders/customer/get-for-customer&custid=2 

SO für Sie $ statt

$.get('index.php?r=orders/customer/get-for-customer',{ custid : custid }, function(data){ 
    alert(data); 
    ........ 

Sie sollten

$.get('customer/get-for-customer',{ custid : custid }, function(data){ 
    alert(data); 
+0

Hallo scaisEdge, die Controller-Aktion verwenden, erhalten war in CustomerController. aber "Kunde/Kunde" funktionierte nicht und "Kunde/Kunde". Dann habe ich die Controller-Aktion nach OrdersController verschoben und versucht "Get-for-Customer" zu bekommen und es hat funktioniert. Aber wie kann ich das von einem anderen Controller (in diesem Fall CustomerController) verwenden? – Tanmay

+0

Im Auftragsmodul befinden sich 2 Controller - OrdersController und CustomerController. – Tanmay

+0

In customerController können Sie Url :: to verwenden ('[Bestellungen/Kunden erhalten']); Mit UrlHelpers müssen Sie 'use yii \ helpers \ URL;' – scaisEdge

Verwandte Themen