CakePHP下拉列表,所选项目重定向到项目的视图

CakePHP下拉列表,所选项目重定向到项目的视图,cakephp,redirect,drop-down-menu,Cakephp,Redirect,Drop Down Menu,我想有药物的下拉列表,重定向到所选特定药物的视图。如果他们点击药物“Acetamenophen”,我希望它能将他们发送到该药物的视图。我可以在不添加提交按钮的情况下执行此操作吗 下拉列表中的代码: <?php echo $form->input('Drug.generic', array('type' => 'select', 'label' => 'Quick Select:', 'empty' => 'Select', 'options' => $al

我想有药物的下拉列表,重定向到所选特定药物的视图。如果他们点击药物“Acetamenophen”,我希望它能将他们发送到该药物的视图。我可以在不添加提交按钮的情况下执行此操作吗

下拉列表中的代码:

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

我会将select放在一个表单中,而不使用submit按钮,然后在select中添加一个
onclick
(实际上,您不需要整个框架):


当然,在控制器中,您必须检查
this->data
,并根据选择将用户重定向到正确的页面,或者如果您不想重定向用户,只需更改find()上的条件即可


希望这有帮助,

您可以将根url存储在
default.ctp中的js变量中,如下所示:

window.location = _ROOT + 'drugs/view/' + val;
将此代码放在default.ctp
部分中

<script>
  var _ROOT = "<?php echo $this->Html->url('/', true); ?>";
</script>
将jquery库放在
app/webroot/js
文件夹中,创建一个
YOURNAME.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;
    });
});

通过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;
        }
    });

});

$(文档).ready(函数(){
$(“#药物选择”)。更改(功能(){
var drug_id=$(this.val();
如果(药物id.length>0)
{
window.location=“/”+药物id;
}
});
});

研究如何使用该函数为“更改”事件附加处理程序。在没有JS helper的情况下,您可以使用jQuey轻松地执行此操作。@在我尝试JsHelper之前,您能否更具体一点?是否要使用jQuery的JS helper?jQuery比Js Helper更容易我想我是直接将其放入视图中,还是将其放入控制器中?看起来我会将其放入自己的文件中,并在视图顶部调用它?@Jonathan你也可以在顶部调用它,但好的做法是创建单独的
js
文件,并将其包含在
default.ctp
文件或使用此代码的相应视图文件中。我创建了drug_list.js文件,将变量放在default.ctp中,并使用echo$javascript->link('drug_list');在default.ctp head部分中。但是它没有重定向,我可能没有正确地执行库部分。cakephp1.3,lol。我没有实现其他所有功能,只是使用以前完成的功能。
window.location = _ROOT + 'drugs/view/' + val;
$(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;
    });
});
<?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;
        }
    });

});