gandh1pl/cakephp-slugs

此扩展包含辅助类,可以轻松地在 CakePHP 3 项目中实现动态 slugs(从数据库加载)。

dev-master 2017-02-22 03:15 UTC

This package is auto-updated.

Last update: 2024-09-14 18:42:20 UTC


README

此扩展提供辅助类,以轻松在 CakePHP 3 项目中实现动态 slugs。

动态 slugs 指的是从数据库中加载的 slugs。

配置

  • 在您的 config/routes.php 文件中,使用此规则代替 fallbacks 规则
    $routes->connect('/:controller/:action/*', ['action' => 'index'], ['routeClass' => 'gandh1pl\Cake\Slugs\Routing\Route\SlugRoute']);
  • App\Model\Table 命名空间中创建文件 RoutesTable.php 并粘贴以下代码
 namespace App\Model\Table;
 
 /**
  * Class RoutesTable
  *
  * @package App\Model\Table
  */
 class RoutesTable extends \gandh1pl\Cake\Slugs\Model\Table\RoutesTable
 {
 
     /**
      * Cache engine name. Set to false if you don't wanna to use query's caching.
      * @var string|false
      */
     protected $_cacheEngine = 'slugs';
 
     /**
      * Name of route's table. Defaults to `routes`, but you can change it.
      * @var string
      */
     protected $tableName = 'routes';
 
     /**
      * Preferred hydrate option when making query to database. Defaults to false.
      * @var bool
      */
     protected $defaultHydrate = false;
 }
  • App\Model\Entity 命名空间中创建文件 Route.php 并粘贴以下代码
 namespace App\Model\Entity;
 class Route extends \gandh1pl\Cake\Slugs\Model\Entity { }
  • 在您想使用 slugs 的表类中(例如 ArticleTable.php),在 initialize() 方法中
        $this->addBehavior('Slug', [
            'className' => '\gandh1pl\Cake\Slugs\Model\Behavior\SlugBehavior',
            'urlTemplate' => '/article/view/:id',
            'urlParameters' => ['id' => 'entity_id'],
            'attributesToGenerateFrom' => ['category.name', 'title', 'id'],
            // 'minimumAttributesToGenerateFrom' => 1,
            // 'generateSlugOnInsert' => true,
            // 'routeRelationBindingKey' => 'route_id',
        ]);