我是 cakePHP 新手,我希望在我的应用程序中重写我的网址。
对于我想要导航的一些控制器。
`controller/action/id/slug`.
为此,我将规则写为,
Router::connect(
'/products/:id/:slug', array('controller' => 'products', 'action' => 'view'), array('pass' => array('id'), 'id' => '[0-9]+')
);
我正在写链接作为..
echo $this->Html->link($record['Category']['name'], array('controller' => 'categories', 'action' => 'index', 'slug' => $record['Category']['slug']), array('escape' => false));
问题
规则是否仅适用于提到的控制器和操作,即产品和视图。?
为什么我的网址(悬停时)显示为
controller/action/slug:slug_name
而不是controller/action/slug_name
?在同一个控制器中,我希望使用不同的 url 重写,例如
action/id/slug_name
我发送的/action
某个地方或我只使用 slug的某个地方action/slug_name
。是否只有一条规则适用于所有人?或者我必须为每个控制器和操作定义单独的规则。也为所有控制器创建通用规则?
请描述更多。我试图阅读文档,但有点困惑。我的参数如何获得我提到的所有类型的请求。
现在写我只使用简单的方法来获取参数
controller/action/param1:param_val1/param2:param_val2,
echo $this->Html->link('Val', array('controller' => 'categories',
'action' => 'index', 'param1' => param_val1, 'param2' => param_val2,),
array('escape' => false));
等等。但我希望有非常清晰的漂亮网址以及更好更快的动作。就像传递 slug 我希望直接获取 findBySlug 或某种使它变得更好的方式。