这个问题的第一部分看起来微不足道,但重点在于第二部分。
所以,假设我的应用程序上有以下几个链接:
http://myapp.com/cars-audi
http://myapp.com/cars-opel
http://myapp.com/cars-fiat
http://myapp.com/cars-vw
在这些情况下,使用模型车。所以,在这种情况下,我想在URL中使用斜杠来逃避。
然后我会有更多的网页和网址,其中涉及道路,例如:
http://myapp.com/roads/germany
http://myapp.com/roads/austria
http://myapp.com/roads/hungary
http://myapp.com/roads/poland
所以,如果它以汽车 - 开头,那么应该使用模型车,如果它以 roads / 开头,模型道路将在游戏中
是否可以使用routes.php中的一些正则表达式,或者在两种情况下加载(使用)同一个模型更好,并且可以像这样使用它们吗?
此外,是否可以使用.htaccess文件帮助解析URL?
答案 0 :(得分:2)
这是将URL路由到控制器操作的简单情况,它根本不涉及模型。
Router::connect('/:carlink',
array('controller' => 'cars', 'action' => 'view'),
array('carlink' => 'cars-\w+', 'pass' => array('carlink')));
此路线显示任何匹配/:carlink
的网址都应路由到指定的控制器和操作。在最后一部分中,您将使用正则表达式:carlink
(“cars-”后跟任何单词)澄清cars-\w+
的含义。您还将该值传递给被调用的操作。
class CarsController extends AppController {
public function view($car) {
if (!preg_match('/cars-(\w+)/', $car, $matches)) {
// action was accessed with invalid URL, bail out
$this->cakeError('error404');
}
// use $matches[1], which will be 'audi', for example
…
}
}
您的道路网址将像往常一样路由到RoadsController:
Router::connect('/roads/*', array('controller' => 'roads', 'action' => 'view'));