[英]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.