active form и css шаблона

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

active form и css шаблона

Сообщение svil »

Хочу настроить отправку формы как в шаблоне, но Active Form не могу настроить.
Вот шаблон:

Код: Выделить всё

<div class="replay-box">
						<div class="row">
							<div class="col-sm-4">
								<h2>Leave a replay</h2>
								<form>
									<div class="blank-arrow">
										<label>Your Name</label>
									</div>
									<span>*</span>
									<input type="text" placeholder="write your name...">
									<div class="blank-arrow">
										<label>Email Address</label>
									</div>
									<span>*</span>
									<input type="email" placeholder="your email address...">
									<div class="blank-arrow">
										<label>Web Site</label>
									</div>
									<input type="email" placeholder="current city...">
								</form>
							</div>
							<div class="col-sm-8">
								<div class="text-area">
									<div class="blank-arrow">
										<label>Your Name</label>
									</div>
									<span>*</span>
									<textarea name="message" rows="11"></textarea>
									<a class="btn btn-primary" href="">post comment</a>
								</div>
							</div>
						</div>
					</div><!--/Repaly Box-->
Вот моя неудачная попытка встроить в шаблон Active Form:

Код: Выделить всё

   <?php Pjax::begin(['id' => 'new_note']) ?>
        <?php $form = ActiveForm::begin(['options' => ['data-pjax' => true]]); ?>
        <div class="replay-box">
            <div class="row">
                <div class="col-sm-4">
                    <h2>Leave a replay</h2>
                    <form>
                        <div class="blank-arrow">
                            <label>Your Name</label>
                        </div>
                        <span>*</span>
                        <input type="text" placeholder="write your name...">

                        <div class="blank-arrow">
                            <label>Email Address</label>
                        </div>
                        <span>*</span>
                        //здесь не настраивается поле ввода как в шаблоне:
                        <?= $form->field($comment, 'email',  ['inputOptions' => ['autofocus' => 'autofocus', 'class' => 'blank-arrow']
                        ])->textInput()->input('email', ['placeholder' => "Введите Ваш email"])->label(false); ?>



                        <input type="email" placeholder="your email address...">

                        <div class="blank-arrow">
                            <label>Web Site</label>
                        </div>
                        <input type="email" placeholder="current city...">
                    </form>
                </div>
                <div class="col-sm-8">
                    <div class="text-area">
                        <div class="blank-arrow">
                            <label>Your Name</label>
                        </div>
                        <span>*</span>
                        <textarea name="message" rows="11"></textarea>
                        <a class="btn btn-primary" href="">post comment</a>
                    </div>
                </div>
            </div>
        </div><!--/Repaly Box-->

        <?php ActiveForm::end(); ?>
        <?php Pjax::end() ?>
    </div>
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: active form и css шаблона

Сообщение futbolim »

Для начала <form> уберите и опишите, что именно не работает
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: active form и css шаблона

Сообщение svil »

Мне нужен Active form, как я его уберу.

Код: Выделить всё

 <?php $form = ActiveForm::begin(['options' => ['data-pjax' => true,
                'class' => 'replay-box'
            ]] ); ?>
Вот попыталась класс показать для формы.
Здесь полю email хотела показать css стили какие брать

Код: Выделить всё

  <div class="blank-arrow">
                            <label>Email Address</label>
                        </div>
                        <span>*</span>
                        <?= $form->field($comment, 'email',  ['inputOptions' => ['autofocus' => 'autofocus', 'class' => 'replay-box row col-sm-4 form input']
                        ])->textInput()->input('email', ['placeholder' => "Введите Ваш email"]); ?>


вместо того, что в шаблоне

Код: Выделить всё

 <input type="email" placeholder="your email address...">
Как шаблон натянуть на active form?
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: active form и css шаблона

Сообщение svil »

https://demo.themeum.com/html/eshopper/blog-single.html
Так форма выглядит - внизу страницы
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: active form и css шаблона

Сообщение svil »

Переделала (работает):

Код: Выделить всё

  <div class="replay-box">
            <div class="row">


            <?php Pjax::begin(['id' => 'new_note']) ?>
            <?php $form = ActiveForm::begin(['options' => ['data-pjax' => true, 'class' => 'replay-box row col-sm-4 form']]); ?>
                <div class="col-sm-12">
                    <h2>Оставьте комментарий: </h2>
<form>
            <div class="blank-arrow">
                <label>Ваше имя</label>
            </div>
            <span>*</span>
            <?= $form->field($comment, 'name',  ['inputOptions' => ['autofocus' => 'autofocus', 'class' => 'input']
            ])->textInput()->input('text', ['placeholder' => "Введите Ваше имя"]); ?>



            <div class="blank-arrow">
                <label>Ваш Email</label>
            </div>
            <span>*</span>
            <?= $form->field($comment, 'email',  ['inputOptions' => ['autofocus' => 'autofocus', 'class' => 'input']
            ])->textInput()->input('email', ['placeholder' => "Введите Ваш email"]); ?>
</form>
        </div>
        <div class="col-sm-8">
            <div class="text-area">
                <div class="blank-arrow">

                <label>Ваш комментарий</label>
               </div>
            <span>*</span>
            <?= $form->field($comment, 'text')->textarea(['rows' => 11]) ?>
                <a> <?= Html::submitButton('Save', ['class' => 'btn btn-primary']) ?></a>
            </div>
        </div>

            <?php ActiveForm::end(); ?>
            <?php Pjax::end() ?>

            </div>
        </div>
        
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: active form и css шаблона

Сообщение andku83 »

futbolim писал(а): 2018.08.09, 15:37 Для начала <form> уберите ...
svil писал(а): 2018.08.09, 15:45 Мне нужен Active form, как я его уберу.

Код: Выделить всё

            <?php $form = ActiveForm::begin(['options' => ['data-pjax' => true, 'class' => 'replay-box row col-sm-4 form']]); ?>
<form>
</form>
            <?php ActiveForm::end(); ?>
код выше генерирует:

Код: Выделить всё

<form>
   <form>
   </form>
</form>
что является невалидным html браузер то его провалидирует и попытается привести к валидному, но не факт что он сделает это верно.
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: active form и css шаблона

Сообщение svil »

Да, одну пару form внутри пришлось убрать.
В итоге осталось так:

Код: Выделить всё

<?php

use yii\helpers\Html;
use yii\widgets\Pjax;
use yii\widgets\ActiveForm;


?>
<section>
    <div class="container">
<div class="blog-post-area">

						<h2 class="title text-center">Блог</h2>
						<div class="single-blog-post">
							<h3><?=$blog->name ?></h3>
							<div class="post-meta">
								<ul>
									<li><i class="fa fa-calendar"></i> <?=$blog->date ?></li>
								</ul>
							</div>
                            <?php $mainImg = $blog->getImage();?>
							<a>
                                <?= Html::img($mainImg->getUrl(), ['alt' => $blog->name])?>

							</a>
							<p><?=$blog->text?></p>
							
						</div>
					</div><!--/blog-post-area-->

        <div class="response-area">
            <h2>Комментарии</h2>
            <?php Pjax::begin(['id' => 'notes']) ?>
            <ul class="media-list">
                <?php foreach($comments as $commen): ?>
                <li class="media">
                    <div class="media-body">

                        <ul class="sinlge-post-meta">
                            <li><i class="fa fa-user"></i><?= $commen->name ?></li>
                            <li><i class="fa fa-calendar"></i><?= $commen->date ?></li>
                        </ul>
                        <p><?= $commen->text ?></p>
                    </div>
                </li>
                <?php endforeach;?>
            </ul>
            <?php Pjax::end() ?>
        </div><!--/Response-area-->







        <div class="replay-box">
            <div class="row">


                <?php Pjax::begin(['id' => 'new_note']) ?>
                <?php $form = ActiveForm::begin(['options' => ['data-pjax' => true, 'class' => 'replay-box row']]); ?>

                <div class="col-sm-12">
                    <h2>Оставьте комментарий: </h2>

                        <div class="blank-arrow">
                            <label>Ваше имя</label>
                        </div>
                        <span>*</span>
                        <?= $form->field($comment, 'name')->textInput(['maxlength' => true])->label(false, ['style'=>'display:none']) ?>


                        <div class="blank-arrow">
                            <label>Ваш Email</label>
                        </div>
                        <span>*</span>
                        <?= $form->field($comment, 'email')->textInput(['maxlength' => true])->label(false, ['style'=>'display:none']) ?>



                    <div class="text-area">
                        <div class="blank-arrow">

                            <label>Ваш комментарий</label>
                        </div>
                        <span>*</span>
                        <?= $form->field($comment, 'text')->textarea(['rows' => 11])->label(false, ['style'=>'display:none']) ?>

                        <a> <?= Html::submitButton('Отправить комментарий', ['class' => 'get_discount btn']) ?></a>
                    </div>
                </div>

                <?php ActiveForm::end(); ?>
                <?php Pjax::end() ?>

            </div>
        </div>





    </div>
</section>
<?php

?>
Но мне не нравится, что Pjax работает странно - вся страница перезагружается как-то, а не первый Pjax, где комменты из БД выводятся.
main.js

Код: Выделить всё

$("document").ready(function(){
    $("#new_note").on("pjax:end", function() {
        $.pjax.reload({container:"#notes"});  //Reload GridView
    });
});
Контроллер

Код: Выделить всё

 public function actionView($id)
    {

        $blog = Blog::findOne($id);
        $comments= Comment::find()->where(['blog_id' => $id])->all();
        $comment=new Comment();

        if( $comment->load(Yii::$app->request->post()) ) {

            $comment->blog_id = $id;
            $comment->save(false);
        }

        if(Yii::$app->request->isPjax){
            return $this->render('view', compact('comments'));
        }



        return $this->render('view', compact('blog', 'comments', 'comment'));


    }
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: active form и css шаблона

Сообщение andku83 »

Загляните в историю дебагера, скорее всего

Код: Выделить всё

return $this->render('view', compact('comments'));
приводит к ошибке и страница загружается заново обычным запросом.
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: active form и css шаблона

Сообщение svil »

да. Убрала:

Код: Выделить всё

  if(Yii::$app->request->isPjax){
//            return $this->render('view', compact('comments'));
//        }
Как очистить форму после отправки коммента?
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: active form и css шаблона

Сообщение svil »

Не работает, когда убираю save(false);

Код: Выделить всё

 public function actionView($id)
    {

        $blog = Blog::findOne($id);
        $comments= Comment::find()->where(['blog_id' => $id])->all();
        $comment=new Comment();
        $comment->blog_id = $id;
        if( $comment->load(Yii::$app->request->post())&& $comment->save()) {

            Yii::$app->session->setFlash('success', "Комментарий  добавлен");

            return $this->redirect(['view']);
        }

//        if( $comment->load(Yii::$app->request->post()) ) {
//
//           // $comment->blog_id = $id;
//            $comment->save();
//        }

//        if(Yii::$app->request->isPjax){
//            return $this->render('view', compact('comments'));
//        }
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: active form и css шаблона

Сообщение andku83 »

svil писал(а): 2018.08.12, 15:52 Как очистить форму после отправки коммента?

Код: Выделить всё

        if( $comment->load(Yii::$app->request->post()) ) {
            if ($comment->save()) {
                $comment=new Comment();
                $comment->blog_id = $id;
            }
        }
Аватара пользователя
svil
Сообщения: 563
Зарегистрирован: 2018.02.12, 22:41

Re: active form и css шаблона

Сообщение svil »

Спасибо.
Ответить