我有地方可以列出,无论是在主页上,还是作为搜索结果。
型:
SELECT fields FROM blablabla
所以结果:
[[id,name],[id,name],[id,name]]
由于地方可以有自己的页面,我必须转换。它不能在模型中完成,所以:
控制器:
循环访问命中并按 ID 和 NAME 进行转换。
[[id,name,seo_name],[id,name,seo_name],[id,name,seo_name]]
*[1, '地点1']-> [1, '地点1', '1_place1']*
视图:
只是展示它。
但这一次,我必须在"搜索"页面上再次执行此操作。我无法复制粘贴以前的控制器转换代码,所以我需要创建这个函数,但是放在哪里?
正如 Jack 在注释中所说,你应该在数据库表中有表示行的类。因此,如果您有一个包含 id
、 title
和 seo_title
列的 pages
表,那么您应该有一个类来表示应用程序中的列:
<?php
class Page
{
public $id;
public $title;
public $seo_title;
}
在创建 SEO 友好的标题方面,您通常会在 Page
模型中有一个"保存前"回调或 setter 方法,该方法在 title
属性上运行函数,将其小写,删除空格和标点符号等。这可能只是一个帮助程序类。
如果你有一个 slug 助手(SEO 友好的游戏也被称为 slugs),那么你可以在你的 setter 方法中调用它:
<?php
class Page
{
public $title;
public $slug;
public function setTitle($title)
{
$this->title = $title;
$this->slug = SlugHelper::createSlug($title);
}
}
然后在设置页面标题时调用 setter 方法来创建 slug:
$page = new Page();
$page->setTitle('My Page');
print $page->title; // My Page
print $page->slug; // would be something like 'my-page'
然后,您可以将页面模型保存到数据库中,知道它也将具有对SEO友好的标题。