$ this-> Html-> url()会生成RESTful URL吗?

时间:2014-04-01 08:41:53

标签: web-services rest cakephp

我使用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?

我有任何错误吗?

提前致谢。

3 个答案:

答案 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请求,它将路由到添加操作。