用于slug的CakePHP Routes.php
我试图让我的CakePHP应用程序使用slug而不是id。我已经阅读了一些教程和CakePHP书籍,但我肯定错过了一些简单的东西 我的表有一个“slug”字段,我想用它作为URL,而不是默认id 我将ItemsController视图更改为:用于slug的CakePHP Routes.php,cakephp,routes,cakephp-2.0,Cakephp,Routes,Cakephp 2.0,我试图让我的CakePHP应用程序使用slug而不是id。我已经阅读了一些教程和CakePHP书籍,但我肯定错过了一些简单的东西 我的表有一个“slug”字段,我想用它作为URL,而不是默认id 我将ItemsController视图更改为: public function view($slug = null) { if (!$this->Item->exists($slug)) { throw new NotFoundException(__('Invali
public function view($slug = null) {
if (!$this->Item->exists($slug)) {
throw new NotFoundException(__('Invalid item'));
}
$this->set('item', $this->Item->findBySlug($slug));
}
并将其添加到my routes.php
Router::connect(
'/items/:slug',
array('controller' => 'items', 'action'=>'view'),
array('pass'=>array('slug'))
);
但是,当我转到以下位置时,仍然会收到“无效项目,未找到请求的地址…”
mycakeapp/items/slug-value
但是,如果我将所有内容从“slug”更改为“id”,则URL:
mycakeapp/items/id-value
很好用
有人能帮我吗?提前感谢。好吧,请阅读文档以了解更多信息 如果存在具有特定ID的记录,则返回true 如果未传递$id,它将调用Model::getID()以获取当前 记录ID,然后对当前 已配置数据源以确定中是否存在记录 持久存储 它需要一个id而不是slug 下面是一个显示艺术家的模型方法的适当示例:
public function view($id = null, $options = array()) {
$defaults = array(
'contain' => array(
/* ... */
),
'conditions' => array(
'OR' => array(
$this->alias . '.' . $this->primaryKey => $id,
$this->alias . '.slug' => $id
)
)
);
$artist = $this->find('first', Hash::merge($defaults, $options));
if (empty($artist)) {
throw new NotFoundException(__('Invalid Artist'));
}
return $artist;
}
控制器尝试/捕获异常,并通过调用session->setFlasH()将异常消息设置为会话。简单。:) 好吧,请阅读文档以了解更多信息 如果存在具有特定ID的记录,则返回true 如果未传递$id,它将调用Model::getID()以获取当前 记录ID,然后对当前 已配置数据源以确定中是否存在记录 持久存储 它需要一个id而不是slug 下面是一个显示艺术家的模型方法的适当示例:
public function view($id = null, $options = array()) {
$defaults = array(
'contain' => array(
/* ... */
),
'conditions' => array(
'OR' => array(
$this->alias . '.' . $this->primaryKey => $id,
$this->alias . '.slug' => $id
)
)
);
$artist = $this->find('first', Hash::merge($defaults, $options));
if (empty($artist)) {
throw new NotFoundException(__('Invalid Artist'));
}
return $artist;
}
控制器尝试/捕获异常,并通过调用session->setFlasH()将异常消息设置为会话。简单。:) 好吧,请阅读文档以了解更多信息 如果存在具有特定ID的记录,则返回true 如果未传递$id,它将调用Model::getID()以获取当前 记录ID,然后对当前 已配置数据源以确定中是否存在记录 持久存储 它需要一个id而不是slug 下面是一个显示艺术家的模型方法的适当示例:
public function view($id = null, $options = array()) {
$defaults = array(
'contain' => array(
/* ... */
),
'conditions' => array(
'OR' => array(
$this->alias . '.' . $this->primaryKey => $id,
$this->alias . '.slug' => $id
)
)
);
$artist = $this->find('first', Hash::merge($defaults, $options));
if (empty($artist)) {
throw new NotFoundException(__('Invalid Artist'));
}
return $artist;
}
控制器尝试/捕获异常,并通过调用session->setFlasH()将异常消息设置为会话。简单。:) 好吧,请阅读文档以了解更多信息 如果存在具有特定ID的记录,则返回true 如果未传递$id,它将调用Model::getID()以获取当前 记录ID,然后对当前 已配置数据源以确定中是否存在记录 持久存储 它需要一个id而不是slug 下面是一个显示艺术家的模型方法的适当示例:
public function view($id = null, $options = array()) {
$defaults = array(
'contain' => array(
/* ... */
),
'conditions' => array(
'OR' => array(
$this->alias . '.' . $this->primaryKey => $id,
$this->alias . '.slug' => $id
)
)
);
$artist = $this->find('first', Hash::merge($defaults, $options));
if (empty($artist)) {
throw new NotFoundException(__('Invalid Artist'));
}
return $artist;
}
控制器尝试/捕获异常,并通过调用session->setFlasH()将异常消息设置为会话。简单。:) 事实上是这样的,我早该抓到的。谢谢事实上是这样的,我早该抓到的。谢谢事实上是这样的,我早该抓到的。谢谢事实上是这样的,我早该抓到的。谢谢