получение из фронтенда поля и обработка в контроллере

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

получение из фронтенда поля и обработка в контроллере

Сообщение richard »

У меня такая вот ситуация
yii2 advanced
есть во фронтенде на главной странице поле, по тексту которого надо производить поиск в контроллере, тоесть у меня сейчас реализованно так
в вьюшке я отправляю аякс запрос

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

$this->registerJs('
  function send_track() {
 track_name=$("#track-title").text();

    $.ajax({
            url : "'.\yii\helpers\Url::to(["site/send-track"]).'",
            method : "post",
            data : {
                track_name:track_name,                        
            },
           
        });
    return false;
};
$(document).ready(function(){

  setTimeout(function(){send_track();}, 0);
  setInterval(function(){send_track();}, 15000); 
});
а в контроллере принимаю и присваиваю переменной

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

 $track_name = Yii::$app->request->post('track_name');
 
и затем делаю с ней свои операции
только такое у меня почему-то не работает
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: получение из фронтенда поля и обработка в контроллере

Сообщение ElisDN »

registerJs сам в ready оборачивает, так что:

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

$this->registerJs('
    $("#track-title").change(function () {
         track_name=$(this).text();
         $.ajax({
            url : "'.\yii\helpers\Url::to(["site/send-track"]).'",
            method : "post",
            data : {
                track_name:track_name,                        
            },
        });
    });
');
Nerf
Сообщения: 780
Зарегистрирован: 2015.01.29, 00:37

Re: получение из фронтенда поля и обработка в контроллере

Сообщение Nerf »

registerjs оборачивает только по-умолчанию(POS_READY).
Проверьте ещё csrf.
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

У меня почему-то всеравно отдает NULL

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

 public function actionIndex()
    {   $track_name = Yii::$app->request->post('track_name');
var_dump($track_name);
код который вы подсказали я вставил в вьюшку index.php
можете подсказать что имено я не таи написал, кажется что вроде все ок
вот весь метод, который надодится в контроллере site

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

public function actionIndex()
    {   $track_name = Yii::$app->request->post('track_name');
var_dump($track_name);//die();
        $playlistClass = new Playlist();
        $playlist = $playlistClass->find()->where(['name'=>$track_name])->one();//all();
        return $this->render('index'
            ,
           [
            'playlist' => $playlist,
            ]
            );
    }
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

можете помочь, подсказать как можно взять из фронтенда текстовое значение из #track-title
и в контроллере фронтенда его принять, присвоить переменной, и сделать поиск в бд

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

public function actionIndex()
    {   $track_name = Yii::$app->request->post('track_name');
var_dump($track_name);//die();
        $playlistClass = new Playlist();
        $playlist = $playlistClass->find()->where(['name'=>$track_name])->one();//all();
        return $this->render('index'
            ,
           [
            'playlist' => $playlist,
            ]
            );
    } 
вот это должно работать, но я не могу получить track_name оно постоянно null
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: получение из фронтенда поля и обработка в контроллере

Сообщение dmg »

javascript принимает данные?

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

...
track_name=$(this).text();
console.log(track_name);
....
 
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

сделал каи вы и писали

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

$this->registerJs('
$("#track-title").change(function(){
     track_name=$("#track-title").text();
     console.log(track_name);
в консоли ничего не выводится, алертом тоже
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: получение из фронтенда поля и обработка в контроллере

Сообщение dmg »

richard писал(а):сделал каи вы и писали

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

$this->registerJs('
$("#track-title").change(function(){
     track_name=$("#track-title").text();
     console.log(track_name);
в консоли ничего не выводится, алертом тоже
с этого и начинали бы, Yii тут не при чем.
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

я просто не знаю каи правильно это сделать,
у меня есть аякс запрос, который вытаскивает текст с определенного урла и вставляет его в дивы
затем я хочу брать текст, который получил в див с id #track-title и при помощи аякс запроса в контроллере ловить данные которые пришли
затем присваивать эти данные переменной и делать поиск в бд, и затем выдавать ответ

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

public function actionIndex()
    {   
        $request = Yii::$app->request;
        $track_name = $request->get('track_name');
var_dump($request->get('track_name'));//die();
        $playlistClass = new Playlist();
        $playlist = $playlistClass->find()->where(['name'=>$track_name])->one();//all();  вот сюда надо подставлять текст который мне нужно, код работает если вместо $track_name я поставлю допустим 'мое имя'
        return $this->render('index'
            ,
           [
            'playlist' => $playlist,
            ]
            );
    } 
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: получение из фронтенда поля и обработка в контроллере

Сообщение dmg »

прежде чем разбираться с контроллером, разберитесь с javascript.
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

можете подсказать в какую сторону хотя б смотреть?)
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: получение из фронтенда поля и обработка в контроллере

Сообщение dmg »

richard писал(а):сделал каи вы и писали

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

$("#track-title").change(function(){
     track_name=$("#track-title").text();
     console.log(track_name); 
в консоли ничего не выводится, алертом тоже
можете подсказать в какую сторону хотя б смотреть?)
где то здесь ошибка, может id track-title неправильный или пустой, может их несколько.
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

есть такой вопрос, скрипт, который везывается в файле работает, тоесть выдает значение переменной, как можно теперь написать аякс запрос чтобы контроллен SiteController поймал значение?
только выводить получается только при алерте
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: получение из фронтенда поля и обработка в контроллере

Сообщение ElisDN »

$(this).value(), а не $(this).text();
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

вот код, при помощи которого я получил в алерте значение
только этот код находится в файле js

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

$(document).ready(function(){
   
    function send_ajax(){
     track_name=$("#track-title").text();
     alert(track_name);
  };
 setTimeout(function(){send_ajax();}, 5000);
}); 
Последний раз редактировалось richard 2016.02.29, 16:37, всего редактировалось 1 раз.
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

$(this).value(), а не $(this).text();
у меня же див блок и не input
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: получение из фронтенда поля и обработка в контроллере

Сообщение ElisDN »

Навесьте на $("#track-title input").
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

Итак я сделал
в index.php

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

<div id="track-title"><input type="text"  value=""/></div> 

в player.js

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

$(document).ready(function(){

    function send_ajax(){
     var track_name=$("#track-title input").val().substr(0,3);
     console.log(track_name);

  };
 setTimeout(function(){send_ajax();}, 5000);
});
в итоге консоль таи и не выдает ничего, а алерт выдает, в контроллере переменная все также null
dmg
Сообщения: 685
Зарегистрирован: 2012.10.15, 03:09

Re: получение из фронтенда поля и обработка в контроллере

Сообщение dmg »

у вас все время разный код. покажите работающий с алерт и неработающий с console.log (console.log где смотрите? он не может ничего не выдавать)
richard
Сообщения: 135
Зарегистрирован: 2015.07.21, 14:59

Re: получение из фронтенда поля и обработка в контроллере

Сообщение richard »

у меня появился другой вопрос, как из метода допустим actionSendajax
значение return запихнуть в переменную другого метода, допустим
actionIndex
Закрыто