如何在图库中的路径中使用/ album_name和/ album_name / image_name?我已经有了网站工作,但目前路径是/ album,/ image with index()和view()函数。
<?php
class Image extends AppModel {
var $name = 'Image';
var $displayField = 'Name';
var $belongsTo = array(
'Album' => array(
'className' => 'Album'
)
);
}
<?php
class Album extends AppModel {
var $name = 'Album';
var $displayField = 'name';
var $belongsTo = array(
'ParentAlbum' => array(
'className' => 'Album',
'foreignKey' => 'parent_id'
)
);
var $hasMany = array(
'ChildAlbum' => array(
'className' => 'Album',
'foreignKey' => 'parent_id',
'dependent' => false
),
'Image' => array(
'className' => 'Image',
'foreignKey' => 'album_id',
'dependent' => false
)
);
}
<?php
class ImagesController extends AppController {
var $name = 'Images';
function index() {
$this->Image->recursive = 0;
$this->set('images', $this->paginate());
}
function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid image', true));
$this->redirect(array('action' => 'index'));
}
$this->set('image', $this->Image->read(null, $id));
}
}
[root@directadmin01 public_html]# cat controllers/albums_controller.php
<?php
class AlbumsController extends AppController {
var $scaffold = 'admin';
var $name = 'Albums';
var $paginate = array(
'limit' => 95,
'order' => array(
'Album.name' => 'asc')
);
function index() {
$this->Album->recursive = 0;
$this->set('albums', $this->paginate());
$this->set("title_for_layout","Albums");
}
function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid album', true));
$this->redirect(array('action' => 'index'));
}
}
$this->set('album', $this->Album->read(null, $id));
$this->set("title_for_layout", $this->Album->data['Album']['name']);
}
}
这是我的第一个Cakephp应用程序,所以请不要粗暴对我说。令人印象深刻的是,整个(简单的)画廊网站可以用很少的行编写。
然而,似乎创建/ album_name / image_name样式路由可能很棘手?
应该有点像
Router::connect('/:album_name', array('controller' => 'albums', 'action' => 'view', 'home'));
Router::connect('/:album_name/:image_name', array('controller' => 'images', 'action' => 'view', 'home'));
但这怎么可能实现呢?数据库中的Album_names有多个案例和空格,而我想要破折号和小写的URL。
答案 0 :(得分:0)
它比路由更复杂一点,你会想要了解slug和cakephp。看看这里:CakePHP - How to do reverse routing with slug?