2017 © Pedro PelΓ‘ez
 

yii2-extension yii2-binds

БвязываСт ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ сущности посрСдством срСдинной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° основС глобального ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° uid

image

fedornabilkin/yii2-binds

БвязываСт ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ сущности посрСдством срСдинной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° основС глобального ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° uid

  • Wednesday, May 2, 2018
  • by fedornabilkin
  • Repository
  • 1 Watchers
  • 0 Stars
  • 12 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 9 % Grown

The README.md

БвязываниС сущностСй

БвязываСт ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ сущности посрСдством ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° основании глобальнго uid., (*1)

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ php 7.0 ΠΈ Π²Ρ‹ΡˆΠ΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ yii2-tree-manager ΠΈ SAR (simple ajax requests), (*2)

Установка

УстановитС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ composer., (*3)

php composer.phar require --prefer-dist fedornabilkin/yii2-binds "*"

ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ require Π² Ρ„Π°ΠΉΠ» composer.json., (*4)

"fedornabilkin/yii2-binds": "dev-master"

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

php yii migrate --migrationPath=@fedornabilkin/binds/migrations, (*5)

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠΌ /binds/catalog, (*6)

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования

МодСль, (*7)

use fedornabilkin\binds\behaviors\BindBehavior;
use fedornabilkin\binds\behaviors\SeoBehavior;
use fedornabilkin\binds\models\base\BindModel;

class Post extends BindModel
{

    public function behaviors()
    {
        return array_merge_recursive(parent::behaviors(), [
            'SeoBehavior' => [
                'class' => SeoBehavior::class,
            ],
            'BindsBehavior' => [
                'class' => BindBehavior::class,
                'tree' => [
                    // никнэймы ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… ΡƒΠ·Π»ΠΎΠ² Π΄Π΅Ρ€Π΅Π²Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°
                    'nicknames' => [
                        'visible' => [
                            'multiple' => false, // Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ мноТСствСнный Π²Ρ‹Π±ΠΎΡ€
                        ],
                        'categories' => [
                            'multiple' => false,
                        ],
                        'tags' => [
                            'multiple' => true,
                            'asDropdown' => false, // Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ΅ состояниС
                        ],
                    ],
                ],
            ],
        ]);
    }

    /**
     * tableName()
     * rules()
     * attributeLabels()
     * ...
     */


    /**
     * ΠΌΠΎΠ΄Π΅Π»ΠΈ hasOne, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ для удалСния Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
     * Ссли ΠΎΠ½Π° связана с Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΎΠ΄ΠΈΠ½-ΠΊ-ΠΎΠ΄Π½ΠΎΠΌΡƒ
     * 
     * Один ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ привязан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Post
     */
    public function getChildModels()
    {
        return array_merge(parent::getChildModels(), [
            Comment::tableName() => Comment::class,
        ]);
    }

    /**
     * @return ActiveQuery
     */
    public function getComments()
    {
        return $this->hasOne(Comment::class, ['uid_content' => 'uid']);
    }
}

Π€ΠΎΡ€ΠΌΠ° заполнСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, (*8)




= \fedornabilkin\binds\widgets\status\StatusWidget::widget(['model' => $model])?> = $form->field($model, 'title')->textInput(['maxlength' => true]) ?> = $form->field($model, 'post')->textarea(['rows' => 6]) ?>
= Html::submitButton('Save', ['class' => 'btn btn-success']) ?>
= \fedornabilkin\binds\widgets\seo\SeoWidget::widget(['model' => $model])?>
= \fedornabilkin\binds\widgets\binds\BindsWidget::widget(['model' => $model])?>

Если ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡŽ привязана модСль Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³Π°, Ρ‚ΠΎ Π² Comment::getChildModels() Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ эту модСль, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ Post ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊ Π½Π΅ΠΉ относятся, Π° Ρ‚Π°ΠΊΠΆΠ΅ всС Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ коммСнтария., (*9)

Вакая схСма удалСния ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли эти ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΠΎΠ»Π΅ uid с внСшним ΠΊΠ»ΡŽΡ‡ΠΎΠΌ Π½Π° ΠΏΠΎΠ»Π΅ id Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ bind_uids ΠΈ привязаны ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΠ»Π΅ uid_content., (*10)

РСкурсивный поиск uid ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ осущСствляСтся Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ BindModel::_getUids(), (*11)

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

Π§Ρ‚ΠΎΠ±Ρ‹ SEO-Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠ»ΠΈΡΡŒ Π½Π° страницС Π² metatags, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ SeoBehavior Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ View Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅. Π’Π°ΠΊΠΆΠ΅ Π² адрСсС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ $_GET ?alias=adres-stranicy., (*12)

'components' => [
    ...

    'view' => [
        'as seo' => [
            'class' => \fedornabilkin\binds\behaviors\SeoBehavior::class,
        ],
    ],
],

'modules' => [

    ...

    'binds' => [
        'class' => 'fedornabilkin\binds\Module',
    ],
    'treemanager' => [
        'class' => 'kartik\tree\Module',
        'dataStructure' => [
            'keyAttribute' => 'id',
        ],
    ],
],

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΈ обсуТдСниС, (*13)

The Versions

02/05 2018

dev-master

9999999-dev

БвязываСт ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ сущности посрСдством срСдинной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° основС глобального ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° uid

  Sources   Download

MIT

The Requires

 

by Avatar fedornabilkin

extension yii2 db seo catalog binds

12/03 2018

v0.0.1

0.0.1.0

БвязываСт ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ сущности посрСдством срСдинной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π½Π° основС глобального ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° uid

  Sources   Download

MIT

The Requires

 

by Avatar fedornabilkin

extension yii2 db seo catalog binds