我有这样的网址。$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中的任何合法网址。例如:
$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
或其他。
答案 0 :(得分:0)
您的功能可能是
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 仅适用于字符串网址,您需要在控制器中使用
Cake\Routing\Router
namspace