Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Cakephp中如何在url中显示名称而不是id?_Url_Cakephp_Controller - Fatal编程技术网

在Cakephp中如何在url中显示名称而不是id?

在Cakephp中如何在url中显示名称而不是id?,url,cakephp,controller,Url,Cakephp,Controller,我想用cakephp自定义我的url http://localhost/cantq4tickets/events/event_detail/1 我想要的不是url中的1(event_id),而是event name,比如生日派对 您所追求的是路由,这为您提供了一些灵活性,使URL变得美观。我建议先读一读,然后再看一些例子:在events db表中添加字段'slug'VARCHAR(255) 在事件模型的“保存前添加”方法中: public function beforeSave($option

我想用cakephp自定义我的url

http://localhost/cantq4tickets/events/event_detail/1

我想要的不是url中的1(event_id),而是event name,比如生日派对

您所追求的是
路由
,这为您提供了一些灵活性,使URL变得美观。我建议先读一读,然后再看一些例子:

在events db表中添加字段'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