如何在cakephp的新标签页中打开外部URL?

时间:2017-08-23 07:38:58

标签: cakephp

我想打开另一个网址,让我们说:来自cakePHP页面的'localhost / test.html'。

我已经有了一个视图(page.ctp)和控制器(PagesController.php)。在这个页面上有一个名为Wireshark的按钮,每当我点击这个按钮时,我想转到另一个URL,但不想重定向到cakePHP服务器中的另一个页面。

在page.ctp中我使用:



public void reduce(Text key, Iterable<Text> values, Context context)
                throws IOException, InterruptedException {
            String[] value;
            String[] k;
            // key=(i,k),
            // Values = [(M/N,j,V/W),..]
            k = key.toString().split(",");
            HashMap<Integer, Integer> hashA = new HashMap<Integer, Integer>();
            HashMap<Integer, Integer> hashB = new HashMap<Integer, Integer>();
            int i = 0, j = 0;
             //check values 
            for (Text val : values) {
                value = val.toString().split(",");
                if (value[0].equals("M")) {
                    hashA.put(Integer.parseInt(value[1]),
                            Integer.parseInt(value[2]));
                } else {
                    hashB.put(Integer.parseInt(value[1]),
                            Integer.parseInt(value[2]));
                }
            }
            //some codes to produce result value
            int n = 4, result = 101, m_ij , n_jk , t;
            for (int r = 1; r <= n; r++) {
                m_ij = hashA.containsKey(r) ? hashA.get(r) : 101;
                n_jk = hashB.containsKey(r) ? hashB.get(r) : 101;
                t = m_ij + n_jk;
             //finding minimum value
                result = result > t ? t : result;
            }
            context.write(null, new Text(key.toString() + ","+ Integer.toString(result)));
        }

在TestsController中:

public void reduce(Text key, Iterable<Text> values, Context context)
                throws IOException, InterruptedException {
            String[] value;
            String[] k;
            // key=(i,k),
            // Values = [(M/N,j,V/W),..]
            k = key.toString().split(",");
            HashMap<Integer, Integer> hashA = new HashMap<Integer, Integer>();
            HashMap<Integer, Integer> hashB = new HashMap<Integer, Integer>();
            int i = 0, j = 0;
             //check values 
            for (Text val : values) {
                value = val.toString().split(",");
                if (value[0].equals("M")) {
                    hashA.put(Integer.parseInt(value[1]),
                            Integer.parseInt(value[2]));
                } else {
                    hashB.put(Integer.parseInt(value[1]),
                            Integer.parseInt(value[2]));
                }
            }
            //some codes to produce result value
            int n = 4, result = 101, m_ij , n_jk , t;
            for (int r = 1; r <= n; r++) {
                m_ij = hashA.containsKey(r) ? hashA.get(r) : 101;
                n_jk = hashB.containsKey(r) ? hashB.get(r) : 101;
                t = m_ij + n_jk;
             //finding minimum value
                result = result > t ? t : result;
            }
            context.write(null, new Text(key.toString() + ","+ Integer.toString(result)));
        }

在wireshark.ctp:

直到我点击按钮,它才会将我重定向到“http://localhost:9877/tests/wireshark”并显示“你好”。我认为它工作正常,但我需要的是转到另一个网页(localhost / test.html)。

我也在同一个文件中试过这个:

<?php echo $this->Html->link(__('Wireshark'), array('controller' => 'tests','action' => 'wireshark'))?>

当我使用上面的代码时,我得到了这个:

  

错误:找不到请求的地址'/pages/localhost/test.html'   在这台服务器上。

我是全新的,自学蛋糕PHP。我用谷歌搜索了,但没有一篇帖子让我详细解释了如何做到这一点(可能是因为我对此很新)。

任何人都可以帮助我。如果不清楚,我很抱歉请向我澄清。

谢谢

2 个答案:

答案 0 :(得分:1)

将http://添加到网址

<a href="http://localhost/test.html" target="_blank">
    Wireshark
</a>

<!-- or-->

<?= $this->Html->link(
    __('Wireshark'),
    'http://localhost/test.html',
    [
        'target' => '_blank',
    ]
) ?>

答案 1 :(得分:0)

好吧,让我解释一下。

  1. Wireshark的第一个关键字代表href
  2. 的标签
  3. 第二个关键字call Tests代表您的控制器和
  4. 第三个关键字致电wiresha是您的控制器的action
  5. 希望对你有所帮助。

    echo $this->Html->link('Wireshark',array('controller'=>'Tests','action'=>'wireshark'), array('target'=>'_blank'));