2017-10-20 1 views
0

ドロップダウンリストから1つのコントラクトを選択しようとしていますが、Ajaxコールが送信されているIDの代わりにすべてのコントラクトの情報を返すようです。私はZF2にはとても新しいことを心に留めておいてください。ZF2 Ajaxコールは、送信されたIDだけではなく、すべての情報を返します

// view.phtml

<script> 
function loadContractId(id) 
{ 
    $.getJSON('<?php echo $this->basePath();?>/ajax/getId/'+id+'', function(data) { 


    $("#ctrid").text(data["arr"][0].ctr_id); 
    $("#ctrspec").text(data["arr"].ctr_spec); 
    $("#ctrnutype").text(data["arr"].ctr_nu_type); 
    $("#ctrlocationcity").text(data["arr"].ctr_location_c); 
    $("#ctrlocationstate").text(data["arr"].ctr_location_s); 

    $.each(data["arr"], function (index, item) { 
     console.log(item); 
    }); 

    }); 
    $("#contact_holder").css('visibility','visible'); 
} 

</script> 


<div id="loc_placement_panel" class="p0pup"> 
    <form name="loc_placement_form" method="post" action="<?php echo $this->basePath(); ?>/booking/view/add"> 
     <input type="hidden" name="ph_id" value="<?php echo $ar["ph_id"]; ?>"> 
     <input type="hidden" name="pres_status" value="2"> 
     <input type="hidden" name="ph_name" value="<?php echo $ar["ctct_name"]; ?>"> 

     <!--<input type="hidden" name="addon" value="see below">--> 
     <strong>Placements</strong><br/><br/> 

     <label><strong>Contract:</strong></label> 

     <select name="contactlist" id="contactlist" onchange="loadContractId($('#contactlist').val())"> 
     <?php 
       foreach ($ctrLT as $row=>$ar_contracts) 
       { 
        echo "<option value='".$ar_contracts['ctr_id']."'>"; 
        echo $ar_contracts['ctr_no']; 
        echo "</option>"; 
       } 
      ?> 
     </select> 

     <div id="contact_holder" style="visibility: hidden"> 
      <strong>Ctr id: </strong><span id="ctrid" ></span><br/> 
      <strong>Spec: </strong><span id="ctrspec" ></span><br/> 
      <strong>Nurse Type: </strong><span id="ctrnutype" ></span><br/> 
      <strong>City: </strong><span id="ctrlocationcity" ></span><br/> 
      <strong>State: </strong><span id="ctrlocationstate" ></span><br/> 
     </div> 


     <label><strong>User Name:</strong></label> 
     <input type="text" name="loc_location" id="loc_location" value="<?php echo $ar["ctct_name"]; ?>" /> 


     <label><strong>$ltcontracts:</strong></label> 
     <textarea id="txtArea" rows="10" cols="100" name="loc_location" id="loc_location" value=""><?php '<pre>'; print_r($ltcontracts); '</pre>';?></textarea> 


     <br/><br/> 
     <!-- <input type="submit" value="Submit" id="loc_placement_submit_btn" name="loc_placement_submit_btn" /> --> 
     <input type="button" value="Cancel" id="loc_placement_cancel_btn" /> 
    </form> 
</div> 

// AjaxController.php

// LT contracts 
    public function getId($id) { 
     $id = (int) $id; 
     return $this->getResortObject('retainedResort',$id); 
    } 

    // LT contracts 
    public function getIdAction() { 

     $result = new \stdClass(); 

     $arr = $this->getContractsTable()->selectLtContracts($id); 
     $result->code = Response::STATUS_CODE_200; 

     $result->arr = $arr; 
     $json = Json::encode($result); 
     $response = $this->getResponse(); //new Response(); 
     $response->setStatusCode($result->code); 
     $response->getHeaders()->addHeaders(array('Content-Type'=>'application/json')); 
     $response->setContent($json); 
     return $response; 
    } 

// ContractTable.php

Iは($select->where('ctr_id = ?', $id);)、選択されたIDとも試みたが、それはなかったの仕事はありません。

enter image description here 任意のアイデア:

public function selectLtContracts($id = 0, array $ar = null) { 


    $this->table='allcontracts'; 
    $select = new Select($this->table); 
    $select->where->like('ctr_no', '%LT'); 
    $resultSet = $this->selectWith($select); 

    $ar = array(); 
    if($resultSet) 
    { 
    $i=0; 
     foreach ($resultSet as $row) { 

     $ar[$i]['ctr_id']=$row->ctr_id; 
       $ar[$i]['ctr_no']=$row->ctr_no; 
       $ar[$i]['ctr_spec']=$row->ctr_spec; 
       $ar[$i]['ctr_nu_type']=$row->ctr_nu_type; 
       $ar[$i]['ctr_location_c']=$row->ctr_location_c; 
       $ar[$i]['ctr_location_s']=$row->ctr_location_s; 
       $ar[$i]['ctr_nurse']=$row->ctr_nurse; 
       $ar[$i]['ctr_type']=$row->ctr_type; 
       $ar[$i]['ctr_marketer']=$row->ctr_marketer; 
       $ar[$i]['ctr_recruiter']=$row->ctr_recruiter; 
     $i+=1; 
     } 
    } 

    return $ar; 
    } 

これは私がドロップダウンリストから単一の契約を選択したときに、私は私のコンソールから取得しています何ですか?

+0

'selectLtContr acts($ id); ' - ここでは$ id変数を取りますが、$ idは' getIdAction() 'メソッドのどこにも定義されていません。あなたの具体的なフレームワークはわかりませんが、使用する前に変数を定義する必要があることは明らかです。おそらく 'getIdAction($ id)'でしょうか?クライアントから送信された入力変数へのアクセス方法については、フレームワークのドキュメントを確認してください。 – ADyson

+0

'selectLtContracts'メソッドのどこでも' $ id'を使わないことは明らかです。実際の値をこのメソッドに渡しても、データベースから結果を制限するために使用していません。したがって、なぜ単一の項目の代わりに大きいリストを返すのか。 – ADyson

+0

それは正しいです。ありがとう。答えはおそらくContractTable.phpというモデルにあります。私は今夜​​それを理解します。 – Blackcoat77

答えて

0

基本的に私はgetIdAction()にルートからシングル'id'パラメータ含めるのを忘れて:

$id = (int) $this->params()->fromRoute('id', 0); 

をしてContractsTable.phpに私はequalTo() predicateを追加する必要:

...

if($id!='' && $id > 0) 
    $where->equalTo('ctr_id', $id); 

    $select->where($where); 

...

関連する問題