我使用CakePHP 2.4.6。
在routes.php中,我把
Router::mapResources('themes');
然后,我可以访问本地主机/主题/ 211'哪个显示屏幕由动作"查看"控制器"主题"就像我期望的那样。
在视图文件中,我使用
<?php
echo $this->Html->url(array(
'controller' => 'themes',
'action' => 'view',
$theme['Theme']['id']));
?>
然后生成&#39; / themes / view / 211&#39;在HTML中,我期望&#39; / themes / 211&#39;。
$ this-&gt; Html-&gt; url()会生成RESTful URL吗?
如果没有,Cake视图文件如何以其他方式生成RESTful URL?
我有任何错误吗?
提前致谢。
答案 0 :(得分:0)
将操作留空
<?php
echo $this->Html->url(array(
'controller' => 'themes',
'action' => '',
$theme['Theme']['id']));
?>
或者,
<?php
echo $this->Html->url(array(
'controller' => 'themes',
'action' =>$theme['Theme']['id']
));
?>
答案 1 :(得分:0)
如果您希望这种情况发生,请转到\ app \ Config \ routes.php并添加Router::connect('/themes', array('controller' => 'themes', 'action' => 'view'));
你不必改变
<?php
echo $this->Html->url(array(
'controller' => 'themes',
'action' => 'view',
$theme['Theme']['id']));
?>
答案 2 :(得分:0)
你可能还有一些Restfull api调用要定义,所以也许更通用的东西:
Router::connect('/api/:controller', array('api' => true, 'action' => 'index', "[method]" => "GET"), array('pass' => array('id'), 'id' => '([0-9]+|me)'));
Router::connect('/api/:controller', array('api' => true, 'action' => 'add', "[method]" => "POST"), array('pass' => array('id'), 'id' => '([0-9]+|me)'));
Router::connect('/api/:controller/:id', array('api' => true, 'action' => 'view', "[method]" => "GET"), array('pass' => array('id'), 'id' => '([0-9]+|me)'));
Router::connect('/api/:controller/:id', array('api' => true, 'action' => 'edit', "[method]" => "POST"), array('pass' => array('id'), 'id' => '([0-9]+|me)'));
这些路线呼叫如&#34; api / Themes / 123&#34;但是,对于Themes控制器中的动作索引,如果您尝试执行POST请求,它将路由到添加操作。