繁体   English   中英

在cakephp 3中,如何检查两个URL是否指向相同的控制器和动作?

[英]How to check if two url point to same controller and action, in cakephp 3?

我有这样的网址。 $myUrl = 'posts/index'; 而且我需要将此URL与传递给我的方法的另一个URL进行比较,以了解它们是否具有相等的控制器和动作。

public function compareUrls($url) {
    $myUrl = 'posts/index';
    //returns true if both urls point to the same controller and action otherwise returns false
}

传递的URL可以是cakephp中的任何合法URL。 例如:

$url0 = '/';//false
$url1 = 'posts';//true
$url2 = 'posts/index';//true
$url3 = 'en/posts/index/3/foo';//true
$url4 = ['controller'=>'posts' , 'action'=>'index'];//true
$url5 = ['controller'=>'posts' , 'action'=>'index' , 'p1' , 'p2'];//true

或者是其他东西。

您的功能可能是

public function compareUrls($urlString)
{
    $myUrlString = 'posts/index';
    $myUrl = Router::parse($myUrlString);
    $url = Router::parse($urlString);
    if ($myUrl['controller'] == $url['controller'] && $myUrl['action'] == $url['action']) {
        return true;
    } else {
        return false;
    }
}

Route :: parse可以做到。

示例: debug(Router::parse('/admin/users/index'))将返回

[
    'controller' => 'Admin',
    'action' => 'users',
    'pass' => [
        (int) 0 => 'index'
    ],
    'plugin' => null
]

请注意, Route :: parse仅用于字符串url,您需要在控制器中使用Cake\\Routing\\Router命名空间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM