• YII2. Как сформировать переход на страницу в зависимости от того, на какой странице пользователь находится?

    @elizaveta_kotik Автор вопроса
    morricone85: slo_nik: Случайно скинула, когда пробовала, потому что даже когда добавила в форму, происходит такое перенаправление на пустую страницу...

    <?php
    
    use yii\helpers\Html;
    use yii\widgets\ActiveForm;
    
    /* @var $this yii\web\View */
    /* @var $model app\models\Article */
    /* @var $form yii\widgets\ActiveForm */
    ?>
    
    <div class="article-form">
        
        <?php $form = ActiveForm::begin(); ?>
    
        <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
    
        <?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
    
        <?= $form->field($model, 'content')->textarea(['rows' => 6]) ?>
    
        <?= $form->field($model, 'date')->textInput() ?>
    
        <?= Html::hiddenInput('url', Yii::$app->request->referrer)?> 
        
        <?= Html::a('Добавить изображение', ['set-image', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        <?= Html::a('Установить категорию', ['set-category', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        <?= Html::a('Установить тэги', ['set-tags', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        
        <div class="form-group">
           <br>
            <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
        </div>
    
        <?php ActiveForm::end(); ?>
    
    </div>
  • YII2. Как сформировать переход на страницу в зависимости от того, на какой странице пользователь находится?

    @elizaveta_kotik Автор вопроса
    slo_nik: morricone85: Спасибо Вам большое за терпение. Но проблема всё ещё не решилась :(.

    В ArticleController.php исправила:
    // моя функция установки тегов
        public function actionSetTags($id)
        {
            // вытаскиваем статью по её $id
            $article = $this->findModel($id);
            $selectedTags = $article->getSelectedTags(); //
            $tags = ArrayHelper::map(Tag::find()->all(), 'id', 'title');
    
            // если форму отправили
            if(Yii::$app->request->isPost)
            {
                // то в переменную $tags кладём вес знаечния инпута tags
                $tags = Yii::$app->request->post('tags');
                $article->saveTags($tags);
                $url = Yii::$app->request->post('url');
                return $this->redirect($url);
                //return $this->redirect(['view', 'id'=>$article->id]);
            }
            
            // находим модель и передаём виду
            return $this->render('tags', [
                'selectedTags'=>$selectedTags,
                'tags'=>$tags
            ]);
        }


    И в _form.php тоже
    <?php
    
    use yii\helpers\Html;
    use yii\widgets\ActiveForm;
    
    /* @var $this yii\web\View */
    /* @var $model app\models\Article */
    /* @var $form yii\widgets\ActiveForm */
    ?>
    
    <div class="article-form">
        
        <?= Html::hiddenInput('url', Yii::$app->request->referrer)?> 
        
        <?php $form = ActiveForm::begin(); ?>
    
        <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
    
        <?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
    
        <?= $form->field($model, 'content')->textarea(['rows' => 6]) ?>
    
        <?= $form->field($model, 'date')->textInput() ?>
        
        <?= Html::a('Добавить изображение', ['set-image', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        <?= Html::a('Установить категорию', ['set-category', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        <?= Html::a('Установить тэги', ['set-tags', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        
        <div class="form-group">
           <br>
            <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
        </div>
    
        <?php ActiveForm::end(); ?>
    
    </div>


    Но теперь меня перенаправляет на пустую страницу...
    2769c0a34be24f21b8e0ce8692969d67.png
  • YII2. Как сформировать переход на страницу в зависимости от того, на какой странице пользователь находится?

    @elizaveta_kotik Автор вопроса
    slo_nik: я показываю, что добавила в нужные файлы те строки, что вы сказали. Я определила переменную $url, т.к. вы прописали это в предложенном коде.

    _form.php
    <?php
    
    use yii\helpers\Html;
    use yii\widgets\ActiveForm;
    
    /* @var $this yii\web\View */
    /* @var $model app\models\Article */
    /* @var $form yii\widgets\ActiveForm */
    ?>
    
    <?= Html::hiddenInput('url', Yii::$app->request->referrer)?>
    
    <div class="article-form">
        
        <?php $form = ActiveForm::begin(); ?>
    
        <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
    
        <?= $form->field($model, 'description')->textarea(['rows' => 6]) ?>
    
        <?= $form->field($model, 'content')->textarea(['rows' => 6]) ?>
    
        <?= $form->field($model, 'date')->textInput() ?>
        
        <?= Html::a('Добавить изображение', ['set-image', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        <?= Html::a('Установить категорию', ['set-category', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        <?= Html::a('Установить тэги', ['set-tags', 'id' => $model->id], ['class' => 'btn btn-default']) ?>
        
        <div class="form-group">
           <br>
            <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
        </div>
    
        <?php ActiveForm::end(); ?>
    
    </div>



    ArticleController.php

    <?php
    
    namespace app\modules\admin\controllers;
    
    use app\models\Category;
    use app\models\ImageUpload;
    use app\models\Tag;
    use Yii;
    use app\models\Article;
    use app\models\ArticleSearch;
    use yii\helpers\ArrayHelper;
    use yii\web\Controller;
    use yii\web\NotFoundHttpException;
    use yii\filters\VerbFilter;
    use yii\web\UploadedFile;
    
    /**
     * ArticleController implements the CRUD actions for Article model.
     */
    class ArticleController extends Controller
    {
        /**
         * @inheritdoc
         */
        public function behaviors()
        {
            return [
                'verbs' => [
                    'class' => VerbFilter::className(),
                    'actions' => [
                        'delete' => ['POST'],
                    ],
                ],
            ];
        }
    
        /**
         * Lists all Article models.
         * @return mixed
         */
        public function actionIndex()
        {
            $searchModel = new ArticleSearch();
            $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    
            return $this->render('index', [
                'searchModel' => $searchModel,
                'dataProvider' => $dataProvider,
            ]);
        }
    
        /**
         * Displays a single Article model.
         * @param integer $id
         * @return mixed
         */
        public function actionView($id)
        {
            return $this->render('view', [
                'model' => $this->findModel($id),
            ]);
        }
    
        /**
         * Creates a new Article model.
         * If creation is successful, the browser will be redirected to the 'view' page.
         * @return mixed
         */
        public function actionCreate()
        {
            $model = new Article();
    
            if ($model->load(Yii::$app->request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->id]);
            } else {
                return $this->render('create', [
                    'model' => $model,
                ]);
            }
        }
    
        /**
         * Updates an existing Article model.
         * If update is successful, the browser will be redirected to the 'view' page.
         * @param integer $id
         * @return mixed
         */
        public function actionUpdate($id)
        {
            $model = $this->findModel($id);
    
            if ($model->load(Yii::$app->request->post()) && $model->save()) {
                return $this->redirect(['view', 'id' => $model->id]);
            } else {
                return $this->render('update', [
                    'model' => $model,
                ]);
            }
        }
    
        /**
         * Deletes an existing Article model.
         * If deletion is successful, the browser will be redirected to the 'index' page.
         * @param integer $id
         * @return mixed
         */
        public function actionDelete($id)
        {
            $this->findModel($id)->delete();
    
            return $this->redirect(['index']);
        }
    
        /**
         * Finds the Article model based on its primary key value.
         * If the model is not found, a 404 HTTP exception will be thrown.
         * @param integer $id
         * @return Article the loaded model
         * @throws NotFoundHttpException if the model cannot be found
         */
        protected function findModel($id)
        {
            if (($model = Article::findOne($id)) !== null) {
                return $model;
            } else {
                throw new NotFoundHttpException('The requested page does not exist.');
            }
        }
        
        // моя функция сохранения картинки
        public function actionSetImage($id)
        {
            $model = new ImageUpload;
    
            if (Yii::$app->request->isPost)
                // отлавливаем нажатие на кнопку, т.е. если поступил запрос POST
            {
                $article = $this->findModel($id);
                $file = UploadedFile::getInstance($model, 'image');
                // UploadedFile - вспомогательный класс для загрузки файла от YII
                // getInstance - статический метод, который принимает м
                if($article->saveImage($model->uploadFile($file, $article->image)))
                    
                {
                    return $this->redirect(['view', 'id'=>$article->id]);
                }
            }
            
            return $this->render('image', ['model'=>$model]);
        }
        
        
        
        // моя функция установки категории
        public function actionSetCategory($id)
        {
            // когда открывается страница выбора категорий, мы привязываемся к нашей статье по $id
            $article = $this->findModel($id);
            // затем готовим значения для формы. если у записи нет категории, то ставим ей первую из массива категорий
            $selectedCategory = ($article->category) ? $article->category->id : '0';
            // ArrayHelper - создание массива. готовим список для вывода
            $categories = ArrayHelper::map(Category::find()->all(), 'id', 'title');
    
            // ловим dropDownList по названию category
            if(Yii::$app->request->isPost)
            {
                $category = Yii::$app->request->post('category');
                //  и передаём методу saveCategory
                if($article->saveCategory($category)) // если сохранилась категория, то перенаправляем
                {
                    // перенаправление пользователя после сохранения категории
                   return $this->redirect($url);
                }
            }
    
            // все данные передаём в вид
            return $this->render('category', [
                'article'=>$article,
                'selectedCategory'=>$selectedCategory,
                'categories'=>$categories
            ]);
        }
        
        
        
        // моя функция установки тегов
        public function actionSetTags($id)
        {
            // вытаскиваем статью по её $id
            $article = $this->findModel($id);
            $selectedTags = $article->getSelectedTags(); //
            $tags = ArrayHelper::map(Tag::find()->all(), 'id', 'title');
    
            // если форму отправили
            if(Yii::$app->request->isPost)
            {
                // то в переменную $tags кладём вес знаечния инпута tags
                $tags = Yii::$app->request->post('tags');
                $article->saveTags($tags);
                $url = Yii::$app->request->post('url');
                return $this->redirect(Yii::$app->request->referrer);
                //return $this->redirect(['view', 'id'=>$article->id]);
            }
            
            // находим модель и передаём виду
            return $this->render('tags', [
                'selectedTags'=>$selectedTags,
                'tags'=>$tags
            ]);
        }
    }
  • YII2. Как сформировать переход на страницу в зависимости от того, на какой странице пользователь находится?

    @elizaveta_kotik Автор вопроса
    я бы попробовала что-нибудь, если бы смогла всю логику кодом описать :D
  • Как сделать рандомный вызов только двух первых данных из таблицы?

    @elizaveta_kotik Автор вопроса
    а я через TOP 2 пробовала и у меня вообще куча ошибок вылазило!) благодарю :)
  • Как вывести данные из соединённых таблиц, когда они связаны в phpAdmin?

    @elizaveta_kotik Автор вопроса
    Salim_Gareev: проблема решилась тем, что следующий писать такой запрос в функции det_posts() :
    function det_posts() { 
        global $link; 
        <b>$sql = "SELECT * FROM posts p INNER JOIN category c ON p.id_category = c.id_category";</b>
        $result = mysqli_query($link, $sql);
        $posts = mysqli_fetch_all($result, MYSQLI_ASSOC);
        return $posts;      
    }


    И вызывать:
    <div class="categor">
    <b> <?=$post['category']?></b>
    </div>
    <img src="<?=$post['image']?>" alt="">
  • Как вывести данные из соединённых таблиц, когда они связаны в phpAdmin?

    @elizaveta_kotik Автор вопроса
    Salim_Gareev: что-то всё равно немножко не так(
    <div class="categor">
    <?php $catigories = get_categories(); ?>
    <?php
    $category = array_shift(array_filter($catigories, function($a)
    {global $post; return $a['id_category']==$post['id_category'];}));
    echo $category['category'];
    ?>
     </div>

    cd6ebc6e0be1402594ae5e71fd756361.png
  • Почему ajax форма не отправляет на почту?

    @elizaveta_kotik Автор вопроса
    Сергей: спасибо, я всё поняла. я же не сегодня решила в первый раз этим заняться и натыкать код мне не в новинку.
  • Почему ajax форма не отправляет на почту?

    @elizaveta_kotik Автор вопроса
    Сергей: как узнать, уходит он или нет?