0

CakePHP 2.2 を使用しています。私が取得した選択ボックスを動的に更新する方法を適応させています: http://www.willis-owen.co.uk/2011/11/dynamic-select-box-with-cakephp-2-0/#comment -10773は問題なく動作します。ユーザーが別の選択ボックスから「地域」を選択すると、「ホテル」選択ボックスの内容が更新されます。

同じフォームで、ユーザーが選択ボックスから「ホテル」を選択したときに、複数の「チーム」フィールドに「ホテル」モデルの住所の詳細を自動的に入力したいと考えています。

その後、ユーザーはアドレスを変更できます...ユーザーが「チーム」追加ビューで送信をクリックする前に、これらすべてを行います。

Team\add.ctp ビューには、次のコードがあります。

    echo "<div id='address'>";
    echo $this->Form->input('address_1');
    echo $this->Form->input('address_2');
    echo $this->Form->input('address_3');
    echo $this->Form->input('city');
    echo $this->Form->input('postcode');
    echo $this->Form->input('country');
    echo "</div>";

...

    $this->Js->get('#TeamHotelId')->event('change',
        $this->Js->request(array(
            'controller'=>'hotels',
            'action'=>'getAddress'
            ), array(
            'update'=> '#address',
            'async' => true,
            'method' => 'post',
            'dataExpression' => true,
            'data'=> $this->Js->serializeForm(array(
                'isForm' => true,
                'inline' => true))
                        )
        )
    );

私の HotelsController.php には次のものがあります。

public function getAddress() {
    $hotel_id = $this->request->data['Team']['hotel_id'];
    CakeLog::write('debug', print_r($hotel_id, true));
    $address = $this->Hotel->find('first', array(
            'recursive' => -1,
            'fields' => array('hotel.address_1', 'hotel.address_2', 'hotel.address_3', 'hotel.city', 'hotel.postcode', 'hotel.country'),
            'conditions' => array('Hotel.id' => $hotel_id)
            ));
    CakeLog::write('debug', print_r($address, true));
    $this->set('hotels', $address);
    $this->set(compact('address'));
    $this->layout = 'ajax';
}   

ホテル\get_address.ctp:

    <?php 
        echo $this->Form->input('Team.address_1', array('value'=> $address['Hotel']['address_1']));
        echo $this->Form->input('Team.address_2', array('value'=> $address['Hotel']['address_2']));
        echo $this->Form->input('Team.address_3', array('value'=> $address['Hotel']['address_3']));
        echo $this->Form->input('Team.city', array('value'=> $address['Hotel']['city']));
        echo $this->Form->input('Team.postcode', array('value'=> $address['Hotel']['postcode']));
        echo $this->Form->input('Team.country', array('value'=> $address['Hotel']['country'])); ?>

これが機能するようになり、コードが更新されました。

4

1 に答える 1

0

あなたが達成しようとしているように、あなたはそのようにすることはできません。ただし、ajax を使用してドロップダウンから ID を渡し、その ID に基づいて他のすべてのフィールドにデータを入力することで、必要に応じて更新できる方法があります。'update'=>#idajax リクエストでコンテンツを表示するページに表示するすべてのフィールドを含む div の div id を入力する必要があることを確認してください。

注: www.willis-owen.co.uk など、指定した Richard のリンクをたどってください。あなたがやろうとしていることは間違いなく役に立ちます。

于 2013-01-18T16:29:05.633 に答える