这是我的第一篇文章在这里:)

我在与处理URL和参数的一些困难。我已经通过路由器类的API文档了一遍又一遍,并没有发现任何有用的。

首先,我想知道是否有CakePHP中处理的URL任何“通用”格式(1.3)。目前,我正在处理我所有的(即路由器:: URL和$ HTML的“链接接受的格式)的网址作为简单数组,很容易,只要我只需要他们作为参数传递到蛋糕的自己的方法。通常,如果我需要别的东西变得非常棘手。

主要我在与转换字符串的URL的基本阵列格式问题。 比方说,我想$ arrayUrl转换为字符串,不是再次进入网址:

$arrayUrl=array('controller'=>'SomeController','action'=>'someAction','someValue');
$url=Router::url($arrayUrl);       //$url is now '/path/to/site/someController/someAction/someValue'
$url=Router::normalize($url);      //remove '/path/to/site'
$parsed=Router::parse($url);       /*$parsed is now
Array(
    [controller] => someController
    [action] => someAction
    [named] => Array()
    [pass] => Array([0] => someValue)
    [plugin] => 
) */

这似乎是一个可怕的很多代码做一些简单以2种核心格式之间进行转换。此外,请注意$解析仍没有一样$ arrayUrl。当然,我可以调整$手动解析,实际上我已经做了几次作为快速的补丁,但我希望去的这条底线。

我还注意到,在控制器使用前缀路由,这 - $> PARAMS时具有嵌入在该动作的前缀(即[动作] =>“admin_edit”)和路由器的结果::解析()不会。这两个过程中有前缀在它自己的密钥。

要总结,我该如何转换这些3之间的URL(或4,如果包括前缀事)中提到的格式的正确方法? 当然,它会很容易通过这个破解我的方式,但我还是愿意相信,蛋糕正被一堆谁比我有更多的经验和见识的人开发的,所以我猜有一个很好的原因“知觉不当行为”。

我试图把我的问题一样好,我可以,但由于我的生疏的英语能力,我不得不采取了不少弯路:)我将更多地解释如果需要的话。

有帮助吗?

解决方案

用于蛋糕的URL的“正式”的格式应该是数组符号array('controller' => 'foo', 'action' => 'bar', 'baz', 'admin' => true)。当你写网址,你应该使用这种格式。 Router类将翻译那些需要分派器(/admin/foo/bar/baz),根据URL的情况下使用。

的字符串或者(array('named' => array(), 'pass' => array(), …))或信息

您应该在控制行动的要调用方面想起来。网址(字符串)只是一个必要之恶在网络背景下做到这一点。不应该有任何需要您使用调度格式。指定URL时,如果你想改变你的URL方案你应该也没有使用字符串表示法,因为这些不能被反向路由。

也许你可以用一个例子,为什么你需要这三种形式,从一个转换到其他解释?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top