如何在网址中显示名称,而不是在Cakephp中显示ID?

时间:2014-06-07 10:05:30

标签: url cakephp controller

我想在cakephp中自定义我的网址

http://localhost/cantq4tickets/events/event_detail/1
在URL中

而不是1(event_id)我想要事件名称ex。生日聚会。

2 个答案:

答案 0 :(得分:0)

您在Routing之后,这使您可以灵活地设置网址。我建议先阅读Cookbook,然后再讨论其中一些例子:http://lecterror.com/articles/view/advanced-routing-with-cakephp-one-example

答案 1 :(得分:0)

在您的事件数据库表中添加字段'slug'VARCHAR(255)

在您的活动模型中添加保存方法之前:

public function beforeSave($options = array()) {
    parent::beforeSave();
        $name_to_slug = Inflector::slug($this->data['Event']['name'], $replacement = '-');
        $this->data['Event']['slug'] = strtolower($name_to_slug);

    return true;    
}

在路由器中

Router::connect('/events/*', array('controller' => 'events', 'action' => 'details'));

您的观点中的链接:

<?php echo $this->Html->link($event['Event']['name'],array('controller'=>'events','action'=>'details',$event['Event']['slug'])); ?>
您的EventsController中的

:: details($ slug = null) findBySlug