コントローラクラス
<?php public function inputAction() { $this->view->zip_search_action = $this->_helper->url('zip', 'Ajax'); }
input.tpl
<tr> <th>郵便番号</th> <td> <input type="text" id="user_zip" name="user_zip" maxlength="8" value="{$item['user_zip']|zip_format}"> <input type="button" id="btnSearchAddressByZip" name="btnSearchAddressByZip" value="住所検索" onClick="searchZipAddress('user_zip', 'user_address_text', '{$zip_search_action}');"> </td> </tr> <tr> <th>住所</th> <td> <input type="text" id="user_address_text" name="user_address_text" maxlength="120" value="{$item['user_address_text']}"> </td> </tr>
function searchZipAddress(inputTarget, destTarget, action) { var inputID = '#' + inputTarget; var destID = '#' + destTarget; var inputVal = $(inputID).val(); var reqURL = action + '/zip/' + inputVal + '/'; // inputのvalueに対してloadする $.get(reqURL, function(result) { $(destID).val(result); }); }
ajaxコントローラ
<?php class AjaxController extends Zend_Controller_Action_Mybase { protected function init_controller() { // 単純な文字列を返すレイアウトベース $this->_helper->layout->setLayout('layout_ajax'); } /** * 郵便番号検索 */ public function zipAction() { $param_zip = $this->_getParam('zip'); $address[] = array(); $address['zip'] = AddressHelper::FormatZip($param_zip); $address['pref'] = ''; $address['ciry'] = ''; $address['area'] = ''; $address['jigyousho_name'] = ''; $address['message'] = '(該当する住所が見つかりません)'; if ((!empty($param_zip)) && (AddressHelper::isZipFormat($param_zip))) { $sc = dataAccessService::createCriteria('zip'); $sc->setZipCode(AddressHelper::UnFormatZip($param_zip)); $row = dataAccessService::selectMasterZipRow($sc); if (count($row) > 0) { $address['pref'] = $row['pref']; $address['ciry'] = $row['city']; $address['area'] = $row['area']; $address['jigyousho_name'] = $row['jigyousho_name']; $address['message'] = ''; } } $this->view->result = $address; } }
zip.tpl
{strip} {if $result['message'] == ''} {$result['pref']}{$result['city']}{$result['area']}{if $result['jigyousho_name'] != ''} {$result['jigyousho_name']}{/if} {else} {$result['message']} {/if} {/strip}
{$content nofilter}