maks757 / yii2-friendly-url
Friendly url for your library or module
Installs: 168
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 1
Open Issues: 0
Type:yii2-extension
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-11-22 12:53:01 UTC
README
Friendly url for your library or module
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist maks757/yii2-friendly-url "*"
or add
"maks757/yii2-friendly-url": "*"
to the require section of your composer.json
file.
Usage
Model
// implements IUrlRules !!! class ProductModel extends \yii\db\ActiveRecord implements maks757\friendly\components\IUrlRules { /** * @inheritdoc */ public static function tableName() { return 'products'; } /** * @inheritdoc */ public function rules() { return [ //... // seo data [['seoUrl', 'seoTitle', 'seoDescription', 'seoKeywords'], 'string'] ]; } // Exemple: $key = 'my-first-product' -> return id /** * @param mixed $key * @return boolean|integer model id */ public function fiendKey($key) { $model = ProductModel::findOne(['seoUrl' => $key]); return empty($model) ? false : $model->id; } // Exemple: $id = 10 -> return seoUrl /** * @param integer $id * @return string */ public function seoUrl($id) { return ProductModel::findOne($id)->seoUrl; } }
Configuration
'components' => [ //... 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ 'news' => 'product/show', [ 'class' => \maks757\friendly\UrlRules::className(), 'action' => 'product/show', // View 'product/show' or news 'controller_and_action' => 'product/show', // Action news show //param: (action_key) - Action param get product id //param: (url_key) - // View set product id 'routes' => [ ['model' => \common\models\ProductGroupModel::class, 'url_key' => 'group_id', 'action_key' => 'group',], ['model' => \common\models\ProductModel::class, 'url_key' => 'product_id', 'action_key' => 'product',], ] ], ], ], //... ],
View
<a href="Url::toRoute(['/product/show', 'group_id' => $group, 'product_id' => $product->id])">Go to product</a>
example url: https://tise/product/show/water/colla
water = group seo url
colla = product seo url
Action from Product Controller
public function actionShow($group, $product) { //... }