我正在进行重定向以自动完成某些字段,而我正在使用简单的javascript进行此操作。
我想打印一个没有A标签的网址,然后我使用了Url builder。我在Router类中看过文档并查看了此方法的源代码,但我看到了一些我无法理解的内容。
当我将Url builder与此代码一起使用时,一切正常:
<?= $this->Url->build(['controller' => 'places', 'action' => 'add', '?' => ['event_id' => $event->id]]) ?>
Url genetared是:
/places/add?event_id=1
但是,当我添加更多参数时?查询,我得到一个&amp;在网址中,但我没有在文档中找到一些特殊字符过滤器。
<?= $this->Url->build(['controller' => 'places', 'action' => 'add', '?' => ['from' => 'events','id' => $event->id]])
// Generates: /places/add?from=events&id=1
// I want: /places/add?from=events&id=1
?>
是否可以选择获得&amp;没有&amp;?如果我将所有内容放在一个字符串中,我会得到UTF代码%5D和那些。我在javascript window.open中使用url,然后我不在html体内打印。
我在http://api.cakephp.org/3.0/source-class-Cake.Routing.Router.html#509-646中看到第597行,但我不明白$ url = static :: _ applyUrlFilters($ url);代码正在改变一些东西。
谢谢!
答案 0 :(得分:3)
URL帮助程序用于生成在标记上下文中使用的URL,因此它们是使用h()
函数进行实体编码。
如果您需要普通网址,请不要使用网址助手,而应使用Router::url()
方法。
use Cake\Routing\Router;
Router::url([
'controller' => 'places',
'action' => 'add',
'?' => [
'from' => 'events',
'id' => $event->id
]
]);