CakePHP下拉,选定项目重定向以查看项目

时间:2012-04-30 16:53:01

标签: cakephp redirect drop-down-menu

我想有下拉列表药物,重定向到所选特定药物的视图。所以说他们点击药物“Acetamenophen”我希望它将它们发送给药物的观点。如果不添加提交按钮,我可以这样做吗?

我下载的代码:

<?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,)));
  }

3 个答案:

答案 0 :(得分:2)

您可以将根网址存储在default.ctp中的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文件中。

YOURNAME就是您喜欢的

$(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;
    });
});

答案 1 :(得分:0)

我将select放在没有提交按钮的表单中,并在select中添加onclick(实际上你不需要整个框架):

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

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

希望这有帮助,

答案 2 :(得分: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;
        }
    });

});