0

ドロップダウンリストの薬が欲しいのですが、選択した特定の薬のビューにリダイレクトします。つまり、彼らが「アセタメノフェン」という薬をクリックしたとしましょう。私は彼らにその薬のビューに送ってもらいたいのです。送信ボタンを追加せずにそれを行うことはできますか?

ドロップダウン用に持っているコード:

<?php
echo $form->input('Drug.generic', array('type' => 'select', 'label' => 'Quick Select:',
  'empty' => 'Select', 'options' => $alldrugs)
);
?>

インデックスコントローラのアクション(ドロップダウンがオンになっていることを確認してください)

  function index() {
    $this->set('drugs', $this->Drug->find('all'));
    $this->set('alldrugs', $this->Drug->find('list', array('fields' => array('id','generic'), 'order' => 'Drug.generic', 'recursive' => -1,)));
  }
4

3 に答える 3

2

default.ctp次のように、ルートURLをjs変数に保存できます。

このコードをdefault.ctp<head></head>セクションに配置します。

<script>
  var _ROOT = "<?php echo $this->Html->url('/', true); ?>";
</script>

そして、タグ内で、終了<head>前に次の行を追加します。</head>

<?php echo $this->Html->script(array('jquery', 'drug_list')); ?>

次に、_ROOT次のように使用します。

window.location = _ROOT + 'drugs/view/' + val;

jqueryライブラリを配置し、フォルダにYOURNAME.jsファイルを作成し、app/webroot/js次のコードをYOURNAME.jsファイルとともに配置します。

君の名は。

$(function() {
   $('#ID_OF_YOUR_SELECT_BOX').change(function() {   // replace the ID_OF_YOUR_SELECT_BOX with the id to your select box given by Cake
       var val = $(this).val();  // val is the drug id
       window.location = _ROOT + 'drugs/view/' + val;
    });
});
于 2012-04-30T18:23:32.230 に答える
0

送信ボタンのないフォーム内に選択を配置し、選択にを追加しonclickます(実際にはフレームワーク全体は必要ありません)。

<?php
echo $form->input('Drug.generic', array('type' => 'select', 'label' => 'Quick Select:',
  'empty' => 'Select', 'options' => $alldrugs, 'onchange'=>'this.form.submit();')
);
?>

もちろん、コントローラーではthis->data、選択に応じてユーザーをチェックして正しいページにリダイレクトする必要があります。ユーザーをリダイレクトしたくない場合は、find()の条件を変更するだけです。

お役に立てれば、

于 2012-04-30T18:14:40.170 に答える
0

jQuery と PHP を組み合わせることで、必要なアクションに直接リダイレクトできます。

<?php
echo $form->input('Drug.generic', array('type' => 'select', 'label' => 'Quick Select:',
  'empty' => 'Select', 'options' => $alldrugs, 'id' => 'drug_select')
);
?>

$(document).ready(function(){

    $("#drug_select").change(function(){
        var drug_id = $(this).val();
        if(drug_id.length > 0)
        {
            window.location = "<?php echo Router::url(array('controller' => 'drugs', 'action' => 'view'), true) ?>/" + drug_id;
        }
    });

});
于 2012-04-30T18:28:28.800 に答える