@YoManYo
*

Как передать данные из формы MVC?

Здравствуйте. Дело такое. Пишу блог и у каждой записи блога есть есть комментарии. Я не могу передать данные с формы в нужные Action.

Маршрут выглядит данным образом(см. ниже) В данном случае отработает PostController и actionArticle и в качестве параметра передаётся id конкретной записи из БД :
'post/([0-9]+)' => 'post/article/$1',

Класс:

class PostController
{
    public function actionArticle($postId){

        //текущий пост
        $single = Post::getPostById($postId);

        // получаем все коменты из бд
        $commnent = Comment::getComments();
        // на данном этапе уже в виде дерева
        $tree = Comment::getTree($commnent);
        //рекурсивный вовод
        $mess = Comment::showMess($tree);

        if (isset($POST['submit'])){
            $message = $POST['text'];

            // Флаг ошибок
            $errors = false;

            //валидация сообщения
            if(!Comment::checkComment($message)){
                $errors[] = 'Сообщение должно содержать не менее 10 символов';
            }

            // если всё верно
            if ($errors == false){
                // загоням в бд комментарий
                Comment::setComment($message);
            }

        }

      //подгружаем вид
        require_once(VIEW . '/post/article.php');

        return true;
    }
}


После нажатия на кнопку данные из формы должны попасть в actionArticle пост контроллера, пройти проверку и если всё ОК то попасть в БД, но я не понимаю что нужно прописать в avtion моей формы чтобы.

<div class="mb-80 mb-xs-40">

                    <h4 class="blog-page-title font-alt">Leave a comment</h4>

                    <form method="post" action="" id="form" role="form" class="form">

                        <div class="mb-30 mb-md-10">
                            <textarea name="text" id="text" class="input-md form-control" rows="6" placeholder="Comment" maxlength="400"></textarea>
                        </div>

                        <button type="submit" class="btn btn-mod btn-medium">
                            Send comment
                        </button>
                    </form>

                </div>


Естественно форма находится в том же виде т.е.
require_once(VIEW . '/post/article.php');

Хэлп =)
  • Вопрос задан
  • 804 просмотра
Решения вопроса 1
leni_m
@leni_m
ЧупаКобрус
вроде бы если не указывать action, то форма отправляется на тот же адрес с какого отправленна, а это как раз ваш вариант.
Но я делал бы отдельный роут на сохранение коммента.
'save/comment' => 'post/saveComment',
и в PostController
public static function actionSaveComment()
    {
        if (isset($_POST['id'])) {  // а передать id записи можно например через input в форме
                 .. // сохранение в базу
          }
    }

и добавить input в форму
<input type="hidden" name="id" value="<?php echo $postId; ?>" />

и тогда action="/save/comment"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы