@ Росс предложил вам выполнить поиск с использованием Portfolio.slug, так что вот как вы могли бы сделать это:
- Добавьте в таблицу базы данных поле с именем slug.Скорее всего, вам понадобится VARCHAR достаточной длины для размещения слаг.
- Когда вы создаете или обновляете запись «Портфолио», используйте метод Inflector :: slug, чтобы сгенерировать слаг и сохранить его в своей базе данных.,Вы всегда можете сделать это в событии beforeSave модели или, если хотите, в контроллере перед сохранением данных.
- Обновите вызов поиска, чтобы искать Portfolio.slug вместо Portfolio.title.
К сожалению, нет возможности отменить функцию Inflector :: Slug, так как она удаляет определенные символы, такие как апострофы, кавычки, скобки и т. Д., Поэтому вам нужно сохранить слаг в вашей базе данных, если вы хотите найти его.
Вот как можно использовать событие beforeSave в вашей модели:
public function beforeSave(array $options = array())
{
// If the title is not empty, create/update the slug.
if ( ! empty($this->data[$this->alias]['title'] )
$this->data[$this->alias]['slug'] = Inflector::slug($this->data[$this->alias]['title']);
// Returning true is important otherwise the save or saveAll call will fail.
return true;
}