我有這樣的路線:CakePHP的路由器,路由不工作
Router::connect(
'/:controller/*',
array('controller'=>'con3'),
array('controller'=>'con1|con2')
);
我想每次調用
/con1/x1/x2
直接到
/con3/x1/x2
和
/con2/y1/y2
到
/con3/y1/y2
它不工作,爲什麼?
我有這樣的路線:CakePHP的路由器,路由不工作
Router::connect(
'/:controller/*',
array('controller'=>'con3'),
array('controller'=>'con1|con2')
);
我想每次調用
/con1/x1/x2
直接到
/con3/x1/x2
和
/con2/y1/y2
到
/con3/y1/y2
它不工作,爲什麼?
如果需要路由到/con3/
和/con1/
/或/con2/
根據自己的約束,你需要的是一個定製Route class
。爲此,沒有比Mark Story's tutorial on custom Route
classes更好的地方。
否則,你當然可以只擴展你的控制器(和不離身空)是這樣的:
<?php
class Con3Controller extends Con1Controller{
// maybe add model here if you don't have
// var $uses in Con1Controller
// otherwise, extend is just fine
}
?>
在這種情況下,你不需要惹喜歡你現在的中轉航線。對象繼承會照顧你的「別名」。
你有沒有考慮這樣的:
Router::connect('/con1/:action/*', array('controller' => 'con3'));
Router::connect('/con2/:action/*', array('controller' => 'con3'));
謝謝@Oerd,但是,我如何從con1和con2擴展con3? – yossi 2011-05-02 12:20:19
@yossi多重繼承不是PHP中的開箱即用功能:)現在,我認爲我更瞭解您的需求,我已經更新了我的答案。 – Oerd 2011-05-02 17:26:00
這可能是答案......對我期待蛋糕提供內置解決方案感到羞恥:)謝謝 – yossi 2011-05-03 06:28:30