我想知道是否有可能在下一行中使用此类内容但排除某些操作。因为我想管理,添加,删除,...以进行相应的操作而不是显示操作。我知道可以通过明确地预先指定这些规则来实现,但是如果你有其中一些规则,它在路由器文件中看起来不会很好。
Router::connect('/paginas/manage', array('controller' => 'paginas', 'action' => 'manage'));
...
Router::connect('/paginas/*', array('controller' => 'paginas', 'action' => 'display'));
所以目的是删除第一行...
感谢。
答案 0 :(得分:1)
在PaginasController中执行类似这样的操作,基本上我认为是PagesController: ....
public function display(){
// Assuming default behavior of cakephp here
...
if (!empty($path[0])) {
$page = $path[0];
if(
method_exists($this, $page) &&
!in_array(
$page,
array(
// Methods that never should be executed in this controller are going in here
)
)
){
$this->{$page}();
}
}
}
这将在控制器中执行特定方法。您可以将其退出,以便之后停止工作。 这可能有点危险,因为它也可以访问AppController的父方法。
另外一种方法,你还需要两个这里描述的Router :: connect()规则:http://api.cakephp.org/class/router#method-Routerconnect
Router::connect(
'paginas/:action/*',
array(),
array('paginas' => '(manage|add|delete)')
);
首先是另一个,然后是另一个。 从未测试过!
虽然我不明白为什么应该有公共方法来编辑页面。使用它们将它们与其余部分分开:http://book.cakephp.org/2.0/en/development/routing.html#prefix-routing
我建议,如果您正在尝试按照我的想法这样做,那么您将不会开始使用PagesController为页面编写管理。 “页面”在蛋糕中是一个或多或少保留的单词,你可以在使用这些单词时遇到大麻烦(编写一个“文件”插件,一旦包含“文件”模型。浪费时间,好像从cake1.2或1.3那里实际上是一个“文件”类来处理文件操作)。创建一些新的东西,如“ContentPage”或其他任何东西。那你就是一个更加安心的人。这个段落可能没用,因为你的控制器甚至没有命名为“Pages”,但是我讨厌删除长的,所以它保留,以防万一你需要这个信息。
另外,我建议不要更改编程语言,这意味着,您要么使用英语或西班牙语,要么使用英语或西班牙语,或者不是两者或更糟。你可以随意命名你的路线,但是类名应该留在英语中,因为蛋糕也是。
问候 func0der