Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace app\controllers;
- use app\models\Link;
- use app\models\Tag;
- use Yii;
- use yii\data\Pagination;
- use yii\helpers\Url;
- use yii\web\Controller;
- class LinkController extends Controller
- {
- public function actionCreateEdit($id)
- {
- $request = Yii::$app->request;
- $link = Link::find()
- ->where(['id' => $id])
- ->with('tags')
- ->one();
- $allTags = Tag::find()->all();
- if ($link->load($request->post()) && $link->validate()) {
- $givenTags = $request->getBodyParam('tags');
- $newTagNames = array_diff($givenTags, $allTags);
- foreach ($newTagNames as $tagName) {
- $tag = (new Tag)->setName($tagName);
- $tag->save();
- $link->link('tags', $tag);
- }
- foreach (array_diff($allTags, $link->tags) as $existedTag) {
- $link->link('tags', $existedTag);
- }
- $tagsToDelete = array_diff($link->tags, $givenTags);
- foreach ($tagsToDelete as $tag) {
- $link->unlink('tags', $tag, $delete = true);
- }
- $link->save($runValidation = false);
- return $this->redirect(Url::to(['link/create-edit', 'id' => $link->id]));
- }
- return $this->render('create_edit', compact('link', 'allTags'));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement